Tomcat和Openssl構建HTTPS雙向認證(

一、創建服務器證書、客戶端證書以及CA

環境系統爲RedHat AS4 Update4,openssl版本爲OpenSSL 0.9.7a Feb 19 2003,應該是系統自帶版本。
拷貝openssl.cnf文件到當前目錄,按照openssl.cnf文件中配置需要在當前目錄下建立幾個文件和文件夾,有./demoCA/  ./demoCA/newcerts/  ./demoCA/index.txt  ./demoCA/serial,在serial文件中寫入第一個序列號“01”。然後執行以下操作:

1、生成服務器端私鑰和證書請求

生成不帶口令服務器端私鑰server.key
openssl genrsa -out server.key 1024

生成服務器端證書請求 server.csr
openssl req -new -key server.key -out server.csr -config openssl.cnf

 

2、同樣生成客戶端私鑰和請求

openssl genrsa -des3 -out privatekey.key 1024  
openssl req -new -key privatekey.key -out privatekey.csr -config openssl.cnf


3、生成CA

key口令111111,有效期1095天

openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf -days 1095

 

4、通過CA簽發證書

簽發服務器端證書server.crt
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
 
簽發客戶端端證書privatekey.crt
openssl ca -in privatekey.csr -out privatekey.crt -cert ca.crt -keyfile ca.key -config openssl.cnf 

 

5、生成pem格式證書

有時需要用到pem格式的證書,可以用以下方式合併證書文件(crt)和私鑰文件(key)來生成:
$ cat privatekey.crt privatekey.key> privatekey.pem
$ cat server.crt server.key > server.pem

 

6、生成pkcs12格式證書

在tomcat中實現雙向認證有時需要pkcs12格式的證書(該證書包含根證書、服務器端或客戶端的證書和密鑰文件),用以下方法生成:

生成pkcs12服務器證書tomcat.p12,export密碼用111111,該密碼在導入證書時會用到
openssl pkcs12 -export -in server.crt -inkey server.key  -out tomcat.p12 -name tomcat -CAfile ca.crt  -caname root -chain 

生成pkcs12客戶端證書client1.p12,export密碼用111111,該密碼在導入證書時會用到
openssl pkcs12 -export -in privatekey.crt -inkey privatekey.key -out client1.p12 -name client1 -chain -CAfile ca.crt


到此我們創建了將會用到的文件和證書:
客戶端:私鑰privatekey.key、證書privatekey.crt 、pem格式的證書privatekey.pem、pkcs12格式的證書client1.p12
服務器端:私鑰server.key、證書server.crt、pem格式的證書server.pem、pkcs12格式的證書tomcat.p12
CA:根密鑰ca.key、根證書ca.crt

 

二、tomcat實現雙向認證

按照以上方法證書生成後,我們再配置TomCat即可實現雙向認證。此時服務器端我們只用到服務器端pkcs12格式的證書tomcat.p12和CA的根證書ca.crt即可,客戶端用到pkcs12格式的證書client1.p12,具體如下:

 

首先將以上創建的證書server.crt和tomcat.p12拷貝到tomcat主目錄下的conf文件夾下。

 

1. 創建服務器信任的CA證書庫:
把ca.crt證書導入信任證書庫,命令行模式進入tomcat主目錄下的conf目錄,執行以下命令:

keytool -keystore truststore.jks -keypass 111111 -storepass 111111 -alias ca -import -trustcacerts -file ca.crt
 
可以用以下命令查看信任證書庫內容:
keytool -keystore truststore.jks -keypass 111111 -storepass 111111 -list -v
 
2. 配置Tomcat支持HTTPS雙向認證(服務器將認證客戶端證書):
修改tomcat的conf目錄裏的server.xml文件($TOMCAT_HOME/conf/server.xml),找到類似下面內容的配置處,添加配置如下:
    <Connector port="8443"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
               keystoreFile="conf/tomcat.p12" keystorePass="111111" keystoreType="PKCS12"
               truststoreFile="conf/truststore.jks" truststorePass="111111" truststoreType="JKS" />
 
經以上配置後,重啓tomcat,服務器就支持HTTPS雙向認證了。
客戶端導入client1.p12 證書,windows系統雙擊安裝即可,通過瀏覽器https方式訪問服務器的web時會提示選擇證書。
注意:瀏覽器的高級選型中要啓用TLS加密方式。

 以上是參照如下兩個blog整理而成

http://blog.csdn.net/darkstar21cn/archive/2005/06/11/392492.aspx

http://blog.csdn.net/jasonhwang/archive/2008/04/29/2344768.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章