前言apache
前一段時間有了解如何配置Tomcat服務爲Https單向認證和雙向認證,當時也作了一些記錄,今天開始寫博客,就把之前的記錄拿出來整理下,分享給你們。本文沒有介紹證書如何生成,會在下一篇博文裏介紹。vim
在Tomcat的根目錄下找到/conf/server.xml文件打開,找到以下位置瀏覽器
修改成以下內容: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 可使用相對路徑網站
如今這個網站是能夠訪問的,可是會提示證書風險,下面兩張圖片是分別使用360和IE訪問時提示證書風險的狀況,能夠點擊查看證書,將證書安裝到「受信任的根證書頒發機構」目錄下,以後重啓瀏覽器訪問,這個證書異常就會消失3d
如今單項認證就配置完成了,也就是客戶端對服務端已經認證成功了,但服務端並無對客戶端進行認證。code
修改/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
如今訪問網站發現沒法訪問了,還不明白怎麼回事,但你用Chrome訪問時,還有一個提示: XX網站不接受您的登陸證書,或者您可能沒有提供登陸證書。
先打開以下畫面IE:internet選項→內容→證書
其餘瀏覽器:選項→管理證書blog
點擊導入,把本身製做的P12證書放入到「我的」目錄下。注意:導入時要輸入證書密碼
這個時候在刷新頁面就會看到以下畫面,(由瀏覽器而定)
點擊肯定之後,就能夠訪問成功了.(部分瀏覽器導入密鑰後可能須要重啓瀏覽器)
https雙向認證也配置完成了。
tip:由於本篇博文主要講配置,沒有講在服務端的信任證書庫添加我的證書的的公鑰,因此下面附上我生成證書的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生成證書