| 我做好了,呵呵,下面是我寫的筆記,轉載請註明作者名:wingger 本文章在LINUX9+apache2.0.52,tomcat5.5.6,j2se1.5,openssl0.97上實驗通證 本文的目的是為了交流,如有出錯的地方,請指教 轉載請註明出處,並保持文章的完整性 現在開始安裝 首先在安裝之前要明白一些基本概念 1、SSL所使用的認證可以是自己建的產生的,也可以通過一個商業性CA如Verisign 或 Thawte簽署認證。 2、認證的概念:首先要有一個根憑證,然後用根憑證來簽發伺服器憑證和客戶認證,一般理解:伺服器憑證和客戶認證是平級關係。在SSL必須安裝根憑證和伺服器憑證來認證。 因此:在此環境中,至少必須有三個認證:即根憑證,伺服器憑證,用戶端認證 在產生認證之前,一般會有一個私密金鑰,同時用私密金鑰產生認證請求,再利用認證伺服器的根證來簽發認證。 3、簽發認證的問題:我最近找了很多關於openssl的資料,基本上只產生了根憑證和私密金鑰及伺服器憑證請求,並沒有真正的實現簽證。我這裡參考了一些資料,用openssl內建的一個CA.sh來簽認證,而不是用MOD_ssl裡的sign.sh來簽。 用openssl文法來產生認證,有很多條件限定,如目錄,key的位置等,比較麻煩,我實驗了好幾天,最後放棄了。有興趣的可以參考一下openssl手冊。 步驟一:安裝openssl和apache 1、到www.openssl.org下載openssl-0.9.7e.tar.gz(目前最新版) 2、卸載掉老的opensll庫
- #rpm –e –-nodeps openssl
複製代碼 3、解壓:
- #tar xzvf openssl-0.9.7e.tar.gz
複製代碼 4、進入openssl目錄,並安裝,用--prefix指定openssl安裝目錄
- #cd openssl-0.9.7e
- #./config --prefix=/usr/local/openssl
- #make
- #make test
- #make install
複製代碼 5、安裝apache 至www.apache.org/dist下載apache最新版httpd-2.0.52.tar.gz 解壓後進入apache目錄,根據需要安裝需要的模組,我這裡裝了ssl,rewrite,動態模式安裝
- #tar zxvf httpd-2.0.52.tar.gz
- #cd httpd-2.0.52
- #./configure --prefix=PREFIX --enable-ssl --enable-rewrite --enable-so --with-ssl=/usr/local/openssl
- #make
- #make install
複製代碼 步驟二:簽證 安裝openssl後,在openssl下有一個CA.sh檔案,就是利用此檔案來簽證, 來簽三張認證,然後利用這三張認證來布SSL伺服器。 1、在/usr/local/apache/conf下,建立一個ssl.crt目錄,將CA.sh檔案copy至/usr/local/apache/conf/ssl.crt/目錄
- [root@win ssl]# cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache/conf/ssl.crt/CA.sh
複製代碼 2、運行CA.sh -newca,他會找你要CA需要的一個CA自己的私人密鑰密碼檔案。如果沒有這個檔案?按斷行符號會自動建立,輸入密碼來保護這個密碼檔案。之後會要你的一個公司資訊來做CA.crt檔案。最後在目前的目錄下多了一個./demoCA這樣的目錄../demoCA/private/cakey.pem就是CA的key檔案啦,./demoCA/cacert.pem就是CA的crt檔案了
- [root@win ssl.crt]# ./CA.sh -newca
複製代碼 要求輸入如下資訊: QUOTE:Country Name (2 letter code) [GB]:CN State or Province Name (full name) [Berkshire]:FUJIAN Locality Name (eg, city) [Newbury]:FUZHOU Organization Name (eg, company) [My Company Ltd]:FJJM Organizational Unit Name (eg, section) []:FD Common Name (eg, your name or your server's hostname) []:WIN Email Address []:WIN@WIN.COM 這樣就建好了一個CA伺服器,有了一個根憑證的私密金鑰cakey.pem及一張根憑證cacert.pem,現在就可以cacert.pem來給簽證了 3、簽署伺服器憑證 產生伺服器私密金鑰:
- [root@win ssl.crt]# openssl genrsa -des3 -out server.key 1024
複製代碼 產生伺服器憑證請求
- [root@win ssl.crt]# openssl req -new -key server.key -out server.csr
複製代碼 會要求輸入資訊
- Country Name (2 letter code) [GB]:CN
- State or Province Name (full name) [Berkshire]:FUJIAN
- Locality Name (eg, city) [Newbury]:FUZHOU
- Organization Name (eg, company) [My Company Ltd]:FJJM
- Organizational Unit Name (eg, section) []:FD
- Common Name (eg, your name or your server's hostname) []:WIN
- Email Address []:WIN@WIN.COM
- Please enter the following 'extra' attributes
- to be sent with your certificate request
- A challenge password []:WIN
- An optional company name []:WING
複製代碼 最後把server.crt檔案mv成newreq.pem,然後用CA.sh來簽證就可以了
- [root@win ssl.crt]# mv server.csr newreq.pem
- [root@win ssl.crt]# ./CA.sh -sign
複製代碼 這樣就產生了server的認證newcert.pem 把newcert.pem改名成server.crt
- [root@win ssl.crt]# mv newcert.pem server.crt
複製代碼 4、處理用戶端: 產生客戶私密金鑰:
- [root@win ssl.crt]# openssl genrsa -des3 -out client.key 1024
複製代碼 請求
- [root@win ssl.crt]# openssl req -new -key client.key -out client.csr
複製代碼 簽證:
- [root@win ssl.crt]# openssl ca -in client.csr -out client.crt
複製代碼 把認證格式轉換成pkcs12格式
- [root@win ssl.crt]# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx
複製代碼 5、這時就有了三張認證和三個私密金鑰,一個是demoCA下的根憑證,ssl.crt下的伺服器憑證和客戶認證。及demoCA/private下的根key,ssl.crt下的伺服器key和客戶key,在conf下的ssl.conf下指定認證的位置和伺服器key的位置. 我是在conf下建立一個ssl.crt目錄,並將所有的key和認證放到這裡
- #cp demoCA/cacert.pem cacert.pem
複製代碼 同時複製一份認證,更名為ca.crt
- #cp cacert.pem ca.crt
複製代碼 步驟三、編輯ssl.conf
- #cd /usr/local/apache/conf
複製代碼 編輯ssl.conf
- 指定伺服器憑證位置
- SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
- 指定伺服器憑證key位置
- SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key
- 認證目錄
- SSLCACertificatePath /usr/local/apache/conf/ssl.crt
- 根憑證位置
- SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem
- 開啟用戶端SSL請求
- SSLVerifyClient require
- SSLVerifyDepth 1
複製代碼 啟動ssl
- /usr/local/apache/bin/apachectl startssl
複製代碼 會要求輸入server.key的密碼 啟動,這樣一個預設的SSL伺服器及http伺服器就啟動了, 步驟四、安裝和使用認證 把剛才產生的認證:根憑證ca.crt和客戶認證client.pfx下到用戶端,並安裝, ca.crt安裝到信任的機構,client.pfx直接在windows安裝或安裝到個人認證位置,然後用IP訪問HTTP和https伺服器。 |