https 流程及其配置方式

參考教程: Apache Tomcat 7 SSL/TLS Configuration HOW-TO
html

1.首先須要瞭解下看看https運行流程:

(1):客戶端(瀏覽器)發送https請求到服務器web

(2):服務器有私鑰和公約算法

(3):服務器返回公鑰給客戶端shell

(4):客戶端經過系統根證書機構驗證公鑰是否有效,驗證公鑰、時間、機構等信息apache

(5):客戶端驗證成功後生成必定長度的隨機數(如2048位),而後使用公鑰經過證書支持的算法與隨機數加密而後發送給服務器windows

(6):服務器接受到加密數據口經過私鑰解密而後取得隨機數瀏覽器

(7):而後使用隨機數經過證書支持的算法(如:RSA)把內容加密而後響應給客戶端tomcat

(8):客戶端使用隨機數解密內容。服務器


整個https數據交互中涉及到公鑰,私鑰app

2.生成密鑰對:

keytool -genkeypair -alias testdomain -keyalg RSA -keysize 2048 -validity 3650 -keystore e:\\testdomain.keystore

其中名字和姓氏是本身的域名,其餘的任意。

生成了之後就在e:\\盤能看到testdomain.keystore 文件了

3.配置tomcat https:

打開%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連接則出現當前頁面。

若是已有證書 (跳過4,5步驟)導入證書到keystore中

keytool -import -alias tomcat -keystore <your_keystore_filename>    -file <your_certificate_filename>

4.接下來生成證書:

keytool -exportcert -alias testdomain -keystore e:\\testdomain.keystore -file e:\\testdomain.cer

-exportcert命令詳解

導出證書後,就能在e盤看到testdomain.cer文件了。

5.安裝證書讓操做系統信任該證書

雙擊打開證書:

點擊安裝證書


選擇當前或本地計算機,而後下一步

選擇第二個:將全部的證書都放入下列存儲,而後點擊瀏覽。



而後下一步與完成

這兒選擇是


6.而後關閉瀏覽器從新打開

如今就能看到https已經受信任了。


7.配置默認使用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>
相關文章
相關標籤/搜索