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

前言apache

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

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

1.1 修改配置文件

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

tomact-conf-server

修改成以下內容:tomcat

   <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訪問時提示證書風險的狀況,能夠點擊查看證書,將證書安裝到「受信任的根證書頒發機構」目錄下,以後重啓瀏覽器訪問,這個證書異常就會消失3d

如今單項認證就配置完成了,也就是客戶端對服務端已經認證成功了,但服務端並無對客戶端進行認證。code

certificate-error
certificate-error2

2 雙向認證的配置

2.1 修改配置文件

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

<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"
修改完成重啓tomcatxml

2.2 添加本地私鑰

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

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生成證書

相關文章
相關標籤/搜索