1. 程式人生 > >使用CA簽發的服務器證書搭建Tomcat雙向SSL認證服務

使用CA簽發的服務器證書搭建Tomcat雙向SSL認證服務

true cat with 替換 提交 sta 驗證 ssl協議 sdn

第一部分,先說證書的申請。

這步是要到正規的CA公司申請正式的設備證書必須走的步驟。

1、先生成證書的密鑰對

打開命令行,切換到某個自己新建的目錄下,執行如下命令

keytool -genkey -keyalg RSA -keysize 1024 -dname “CN=www.javastar.org,OU=翊天閣,O=翊天閣,L=南京市,ST=江蘇省,C=CN” -alias server -keypass 123456 -keystore server.jks -storepass 123456 -validity 365

這裏說明一下幾個重要的地方,CN=www.javastar.org,這裏的www.javastar.org

一定要換成你實際要部署的站點的域名,如果是在內網,就要用服務器的hostname,一定不可以用IP,否則,是無法建立SSL鏈接的。

OU=翊天閣,O=翊天閣,這裏可以替換成你自己的組織名稱,或者公司名稱。

-validity 365這裏聲明證書有效期為1年。

其他的參數自己可以參考keytool的使用幫助或相關文檔。

好了,成功執行上面的命令後,我們在當前命令行所在目錄得到server.jks文件,這個就是包含密鑰對的基本證書信息庫文件。

2、導出證書請求文件

keytool -certreq -alias server -sigalg “SHA1withRSA” -file server.pem -keypass 123456 -keystore server.jks -storepass 123456

這裏可以得到一個server.pem的文件。

3、向CA公司申請簽發設備證書

將上一步得到的server.pem證書發送給相關的CA公司,CA公司會通過這個申請簽發一張設備證書,最後我們會得到一個.cer的文件,比如server.cer。

同時,我們要取得該CA公司的證書鏈,比如會有CA_ROOT.cer和CA_CA.cer,第一張為CA公司的根證書,第二張為CA公司的簽名證書。

4、將CA根證書導入服務器證書庫

keytool -import -alias CA_ROOT -keystore server.jks -trustcacerts -storepass 123456 -file CA_ROOT.cer

5、將CA簽名證書導入服務器證書庫

keytool -import -alias CA_CA -keystore server.jks -trustcacerts -storepass 123456 -file CA_CA.cer

6、使用CA簽發的證書回復我們自己生成的包含私鑰的證書

keytool -import -alias server -keystore server.jks -trustcacerts -storepass 123456 -file server.cer

7、導出回復成功後的服務器證書

keytool -export -alias server -storepass 123456 -file javastar.org.cer -keystore server.jks

好了,到這裏我們需要的設備證書已經ok了。

最後對我們實際有用的是兩個文件:server.jks,是服務器證書庫,存儲了含有私鑰的服務器證書,及其證書鏈,這個就是主要的設備證書了,是放在服務器的SSL配置裏面;還有一個是javastar.org.cer,這個是只包含服務器證書公鑰的設備證書,是發給用戶,讓用戶放入自己的可信任庫的。

第二部分,配置Tomcat的SSL雙向鏈接

1、準備客戶端證書

keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -dname “CN=Client,OU=javastar.org,L=nj,ST=js,C=cn” -storepass 123456 -keypass 123456 -validity 365

執行完畢,我們會得到一張p12的客戶證書client.p12。

2、導出.cer格式的客戶證書

keytool -export -alias client -keystore client.p12 -storetype PKCS12 -storepass 123456 -rfc -file client.cer

執行完畢得到client.cer證書。

3、將客戶端證書導入服務器的可信任證書庫

keytool -import -v -file client.cer -keystore servertrust.keystore -storepass 123456

執行完畢得到servertrust.keystore,這個是給tomcat服務器端用的。

4、將服務器證書導入客戶端可信任證書庫

keytool -import -v -file javastar.org.cer -keystore clienttrust.keystore -storepass 123456

執行完畢會得到clienttrust.keystore證書庫,留著備用。同時,也可以同樣的方法,把CA_ROOT.cer和CA_CA.cer導入。

5、在和tomcat的bin目錄並行的目錄下新建一個cert文件夾,把server.jks和servertrust.keystore文件拷貝進去。

6、找到tomcat的server.xml文件,找到如下的內容

<!–
<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS” />
–>

去掉註釋,並修改為

<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”500″ scheme=”https” secure=”true”
clientAuth=”true” sslProtocol=”TLS”
keystoreFile=”D:/apache-tomcat-6.0.20/cert/server.jks” keystorePass=”123456″
truststoreFile=”D:/apache-tomcat-6.0.20/cert/servertrust.keystore” truststorePass=”123456″/>

這裏註意把D:/apache-tomcat-6.0.20/cert修改為你的tomcat實際的路徑。

7、啟動或者重啟tomcat,在瀏覽器中導入client.p12的證書,然後,在地址欄輸入https://www.javastar.org:8443,就會彈出證書選擇框,選擇證書後,就可以使用SSL協議訪問tomcat服務器了。

第三部分,在程序中如何建立與服務器的SSL雙向認證鏈接

其實這個就簡單了,以java為例,比如我們現在要訪問一個通過SSL雙向認證保護的WebService接口,只需要在生成的客戶端程序中開始部分加入

System.setProperty(“javax.net.ssl.keyStore”, “D:/client.p12″);
System.setProperty(“javax.net.ssl.keyStorePassword”, “123456″);
System.setProperty(“javax.net.ssl.keyStoreType”, “PKCS12″);
System.setProperty(“javax.net.ssl.trustStore”, “D:/clienttrust.keystore”);
System.setProperty(“javax.net.ssl.trustStorePassword”, “123456″);
System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);

JVM會自動將證書提交給服務器驗證,由於服務器證書也在我們的可信任庫,也會自動信任服務器端的證書。

下面的代碼可以在需要的時候清除以上的環境內容

System.clearProperty(“javax.net.ssl.keyStore”);
System.clearProperty(“javax.net.ssl.keyStorePassword”);
System.clearProperty(“javax.net.ssl.keyStoreType”);
System.clearProperty(“javax.net.ssl.trustStore”);
System.clearProperty(“javax.net.ssl.trustStorePassword”);
System.clearProperty(“javax.net.ssl.trustStoreType”);

轉自https://blog.csdn.net/lucett/article/details/6845386

使用CA簽發的服務器證書搭建Tomcat雙向SSL認證服務