1、證書申請及管理
對於已經擁有域名及公網服務器的用戶,可以通過騰訊雲申請TrustAsia DV SSL CA證書,證書申請流程包含填寫基本信息和域名認證兩步,非常清晰和簡單,沒有什么需要過多描述的。
證書申請及域名認證完成后,即可以證書管理界面下載證書
2、服務器端證書部署
下載的文件是一個壓縮文件包,解壓后可以看到分別有Apache、IIS、Ngnix、Tomcat四個不同的目錄分別對應相應的WEB服務部署環境,下面以Tomcat為例進行說明。
(2.1)安裝證書
配置SSL連接器,將解壓后tomcat目錄中的www.domain.com.jks
文件存放到tomcat安裝目錄的conf目錄下,然后配置同目錄下的server.xml
文件:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf\www.domain.com.jks"
keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
注:
配置文件參數 | 說明 |
---|---|
clientAuth | 如果設為true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進行身份驗證 |
keystoreFile | 指定keystore文件的存放位置,可以指定絕對路徑,也可以指定相對於<catalina_home> (Tomcat安裝目錄)環境變量的相對路徑。如果此項沒有設定,默認情況下,Tomcat將從當前操作系統用戶的用戶目錄下讀取名為 “.keystore”的文件。 |
keystorePass | 密鑰庫密碼,指定keystore的密碼。(如果申請證書時有填寫私鑰密碼,密鑰庫密碼即私鑰密碼) |
sslProtocol | 指定套接字(Socket)使用的加密/解密協議,默認值為TLS |
(2.2)http自動跳轉https的安全配置
到conf目錄下的web.xml。在</welcome-file-list>
后面,</web-app>
,也就是倒數第二段里,加上這樣一段:
<web-resource-collection > <web-resource-name >SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint>
這步目的是讓非ssl的connector跳轉到ssl的connector去。所以還需要前往server.xml進行配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
redirectPort改成ssl的connector的端口443,重啟tomcat后便會生效。
OK,到此為止,服務器端配置便完成了,在瀏覽器中輸入類似於https://www.domain.com試試吧。
3、客戶端證書使用
在某些特殊情況下(如cas及使用cas作為單點登錄環境的網站),客戶端也需要配置秘鑰庫文件:
(3.1)在服務器端導出證書
keytool -export -alias www.domain.com -keystore www.domain.com.jks -file domaincas.cer
(3.2)將證書以電子郵件或者其他可以傳遞的形式傳送到需要部署的客戶端
(3.3)客戶端導入證書
首先將服務端生成的證書文件(domaincas.cer)復制到$JAVA_HOME/jre/lib/security下
導入證書:
keytool -import -trustcacerts -alias www.domain.com -storepass changeit -file domaincas.cer -keystore cacerts
注意客戶端的密碼一般為changeit,不可與私鑰密碼混淆
(3.4)客戶端服務器配置(以tomcat為例)
注意如果CAS中設定了客戶端可以不用HTTPS即可訪問的話,本步驟省略,否則同CAS SERVER端HTTPS的配置一樣。
修改tomcat安裝目錄中conf目錄中的server.xml:
<Connector protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="***" keystorePass="***" port="443"/>