前言
前一段時間有了解如何配置Tomcat服務為Https單向認證和雙向認證,當時也做了一些記錄,今天開始寫博客,就把以前的記錄拿出來整理下,分享給大家。本文沒有介紹證書如何生成,會在下一篇博文里介紹。
1 配置Tomcat服務為https單向認證
1.1 修改配置文件
在Tomcat的根目錄下找到/conf/server.xml文件打開,找到如下位置
修改為如下內容:
<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訪問時提示證書風險的情況,可以點擊查看證書,將證書安裝到“受信任的根證書頒發機構”目錄下,之后重啟瀏覽器訪問,這個證書異常就會消失
現在單項認證就配置完成了,也就是客戶端對服務端已經認證成功了,但服務端並沒有對客戶端進行認證。
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選項→內容→證書
其他瀏覽器:選項→管理證書
點擊導入,把自己制作的P12證書放入到“個人”目錄下。注意:導入時要輸入證書密碼
這個時候在刷新頁面就會看到如下畫面,(由瀏覽器而定)
點擊確定以后,就可以訪問成功了.(部分瀏覽器導入密鑰后可能需要重啟瀏覽器)
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,目錄結構為
其中keystore和client.truststore是在tomcat中配置的,在client.truststore中已經添加了client.key.p12的公鑰,所以上面忘了說了。
client.key.p12需要在客戶端導入到“個人”目錄中
第一次寫博文,請大家多多指教..
下期預告:使用keytool生成證書