Tomcat添加HTTPS單向認證和雙向認證


前言

前一段時間有了解如何配置Tomcat服務為Https單向認證和雙向認證,當時也做了一些記錄,今天開始寫博客,就把以前的記錄拿出來整理下,分享給大家。本文沒有介紹證書如何生成,會在下一篇博文里介紹。

1 配置Tomcat服務為https單向認證

1.1 修改配置文件

在Tomcat的根目錄下找到/conf/server.xml文件打開,找到如下位置

tomact-conf-server

修改為如下內容:

    <Connector port="8443" 
      protocol="org.apache.coyote.http11.Http11Protocol" 
      maxThreads="150"  
      SSLEnabled="true"  
      scheme="https"  
      secure="true" 
      keystoreFile="C:\Install\keystore"  
      keystorePass="server"
      clientAuth="false"  
      sslProtocol="SSL"  
      ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
                    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
                    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
                    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
                    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 
                    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 
                    TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, 
                    TLS_ECDHE_RSA_WITH_RC4_128_SHA, 
                    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
                    TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
                    TLS_DHE_RSA_WITH_AES_256_CBC_SHA, 
                    TLS_RSA_WITH_AES_128_GCM_SHA256,
                    TLS_RSA_WITH_AES_128_CBC_SHA,
                    TLS_RSA_WITH_AES_256_CBC_SHA,
                    TLS_RSA_WITH_3DES_EDE_CBC_SHA,
                    TLS_RSA_WITH_RC4_128_SHA,
                    TLS_RSA_WITH_RC4_128_MD5" 
        sslEnabledProtocols="TLSv1.2" />

這段配置中keystoreFile="C:\Install\keystore" keystorePass="server"
需要根據自己的證書進行調整,其中keystoreFile 可以使用相對路徑

1.2 在本地配置信任證書

現在這個網站是可以訪問的,但是會提示證書風險,下面兩張圖片是分別使用360和IE訪問時提示證書風險的情況,可以點擊查看證書,將證書安裝到“受信任的根證書頒發機構”目錄下,之后重啟瀏覽器訪問,這個證書異常就會消失

現在單項認證就配置完成了,也就是客戶端對服務端已經認證成功了,但服務端並沒有對客戶端進行認證。

certificate-error
certificate-error2

2 雙向認證的配置

2.1 修改配置文件

修改/conf/server.xml文件,上次修改的地方修改如下

<Connector port="443"  
       protocol="org.apache.coyote.http11.Http11Protocol" 
       maxThreads="150"  
       SSLEnabled="true"  
       scheme="https" 
       secure="true" 
       keystoreFile="C:\Install\keystore" 
       keystorePass="server" 
       truststoreFile="C:\Install\client.truststore"
       truststorePass="server"
       clientAuth="true"  
       sslProtocol="SSL"  
       ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, 
                    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, 
                    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 
                    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
                    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
                    TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
                    TLS_ECDHE_RSA_WITH_RC4_128_SHA, 
                    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
                    TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
                    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
                    TLS_RSA_WITH_AES_128_GCM_SHA256, 
                    TLS_RSA_WITH_AES_128_CBC_SHA,
                    TLS_RSA_WITH_AES_256_CBC_SHA,
                    TLS_RSA_WITH_3DES_EDE_CBC_SHA,
                    TLS_RSA_WITH_RC4_128_SHA,
                    TLS_RSA_WITH_RC4_128_MD5" 
        sslEnabledProtocols="TLSv1.2" />

添加屬性有truststoreFile="C:\Install\client.truststore" truststorePass="server"
client.truststore里面放的是信任客戶端的證書
修改屬性有 clientAuth="true"
修改完成重啟tomcat

2.2 添加本地私鑰

現在訪問網站發現無法訪問了,還不明白怎么回事,但你用Chrome訪問時,還有一個提示: XX網站不接受您的登錄證書,或者您可能沒有提供登錄證書。
先打開如下畫面IE:internet選項→內容→證書
其他瀏覽器:選項→管理證書

browser-option

點擊導入,把自己制作的P12證書放入到“個人”目錄下。注意:導入時要輸入證書密碼
這個時候在刷新頁面就會看到如下畫面,(由瀏覽器而定)

import-confirm
confirm-cret

點擊確定以后,就可以訪問成功了.(部分瀏覽器導入密鑰后可能需要重啟瀏覽器)

https雙向認證也配置完成了。

tip:因為本篇博文主要講配置,沒有講在服務端的信任證書庫添加個人證書的的公鑰,所以下面附上我生成證書的bat文件。

3 附上生成證書需要的bat內容

set SERVER_DN="CN=192.168.XXX.XXX, OU=cybersoft.com, O=cybersoft, L=CN, S=CN, C=CN" 
set CLIENT_DN="CN=cybersoft.com.tw, OU=cybersoft.com, O=cybersoft, L=CN, S=CN, C=CN"
set PASS_SET="client"
set SPASS_SET="server"
set CER_ROOT_PATH="e:\SSL"
:: 路徑不存在則創建路徑
if not exist %CER_ROOT_PATH% md %CER_ROOT_PATH%

::制作 keystore
keytool -genkey -alias cyber_server -keyalg RSA -keystore %CER_ROOT_PATH%/keystore -dname %SERVER_DN% -storepass %SPASS_SET% -keypass %SPASS_SET% -validity 36500

keytool -genkey -alias cyber_client -keyalg RSA -storetype PKCS12 -keystore %CER_ROOT_PATH%/client.key.p12 -dname %SERVER_DN% -keypass %PASS_SET% -storepass %PASS_SET% -validity 36500

keytool -export -alias cyber_server -keystore %CER_ROOT_PATH%/keystore -storepass %SPASS_SET% -rfc -file %CER_ROOT_PATH%/server.cer

keytool -export -alias cyber_client -storetype PKCS12 -keystore %CER_ROOT_PATH%/client.key.p12 -storepass %PASS_SET% -rfc -file %CER_ROOT_PATH%/client.cer

keytool -import -file %CER_ROOT_PATH%/server.cer -storepass %PASS_SET% -keystore %CER_ROOT_PATH%/truststore.jks -noprompt

keytool -import -file %CER_ROOT_PATH%/client.cer -storepass %SPASS_SET% -keystore %CER_ROOT_PATH%/client.truststore -noprompt

pause

其中192.168.XXX.XXX,請修改為自己的域名或IP
運行后生成的文件在e:\SSL,目錄結構為

generate-files

其中keystore和client.truststore是在tomcat中配置的,在client.truststore中已經添加了client.key.p12的公鑰,所以上面忘了說了。

client.key.p12需要在客戶端導入到“個人”目錄中

第一次寫博文,請大家多多指教..

下期預告:使用keytool生成證書


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM