參考教程: Apache Tomcat 7 SSL/TLS Configuration HOW-TO
html
(1):客戶端(瀏覽器)發送https請求到服務器web
(2):服務器有私鑰和公約算法
(3):服務器返回公鑰給客戶端shell
(4):客戶端經過系統根證書機構驗證公鑰是否有效,驗證公鑰、時間、機構等信息apache
(5):客戶端驗證成功後生成必定長度的隨機數(如2048位),而後使用公鑰經過證書支持的算法與隨機數加密而後發送給服務器windows
(6):服務器接受到加密數據口經過私鑰解密而後取得隨機數瀏覽器
(7):而後使用隨機數經過證書支持的算法(如:RSA)把內容加密而後響應給客戶端tomcat
(8):客戶端使用隨機數解密內容。服務器
整個https數據交互中涉及到公鑰,私鑰app
keytool -genkeypair -alias testdomain -keyalg RSA -keysize 2048 -validity 3650 -keystore e:\\testdomain.keystore
其中名字和姓氏是本身的域名,其餘的任意。
生成了之後就在e:\\盤能看到testdomain.keystore 文件了
打開%TOMCAT_HOME%/conf/server.xml
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="e:\\testdomain.keystore" keystorePass="123456" clientAuth="false" sslProtocol="TLS"/>
keystoreFile:是密鑰對的路徑,keystorePass:是配置密鑰對時候的密鑰口令。
而後保存啓動tomcat。在瀏覽器中輸入:https://test.domain.com 由於我在c:/windows/system32/drivers/etc/hosts中配置了 :127.0.0.1 test.domain.com 因此我訪問它也就至關於訪問本地服務器了。
打開瀏覽器的結果頁面: (若是打不開該頁面,或者打開後不正常 用netstat -ano |findstr "443" 這條命令查詢443端口是否被佔用,或者把端口改爲其餘的或默認8443.若是端口是非443則訪問的時候須要單獨輸入端口號)
由於還未生成證書,因此瀏覽器(操做系統)不信任當前https連接則出現當前頁面。
keytool -import -alias tomcat -keystore <your_keystore_filename> -file <your_certificate_filename>
keytool -exportcert -alias testdomain -keystore e:\\testdomain.keystore -file e:\\testdomain.cer
-exportcert命令詳解
導出證書後,就能在e盤看到testdomain.cer文件了。
雙擊打開證書:
點擊安裝證書
選擇當前或本地計算機,而後下一步
選擇第二個:將全部的證書都放入下列存儲,而後點擊瀏覽。
而後下一步與完成
這兒選擇是
如今就能看到https已經受信任了。
在%TOMCAT_HOME%/conf/web.xml webapp標籤裏面 最後添加如下代碼
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <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> </security-constraint>