windows + tomcat 部署web服務 http 改爲https訪問方法

HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTPS,但HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。

想要進行https訪問首先得獲得一個數字證書. 這種需要花錢的東西對於筆者這種底層碼農肯定是不用考慮的,這裏使用jdk的keytool生成

進入你的%JAVA_HOME%/bin 目錄下shift+右鍵,打開Powershell窗口

輸入下面指令:

keytool -genkey -alias tomcat -keyalg RSA -keystore F:\tomcat.keystore -validity 365

F:\tomcat.keystore    含義是將證書文件保存在F盤下, 證書名是tomcat.keystore

-validity 365    含義是證書有效期,單位是天

之後會讓你輸入一些必要的內容如下圖:

完成後,你會在上面的路徑出發現證書文件已經存在

打開tomcat的目錄下conf/server.xml 文件

找到下面這段代碼

<!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
 -->

將註釋去掉後修改代碼如下: (https 訪問默認是443端口, HTTP 訪問默認是80)

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="F:\tomcat.keystore"  keystorePass="123456" />

增加了keystoreFile 和 keystorePass 兩個參數, 分別表示證書文件的放置位置和密碼

下面是將HTTP訪問跳轉到HTTPS訪問

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
 
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

改爲

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
 
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

保存退出,打開同級目錄中的web.xml 文件, 在</welcome-file-list>(倒數第2行)標籤中添加如下配置

<!--強制使用https,http請求會自動轉爲https -->
<login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<!--配置網站支持https,/* 表示全部請求都走https, transport-guarantee 標籤設置爲 CONFIDENTIAL以便使應用支持 SSL。 如果需要關閉 SSL ,將 CONFIDENTIAL 改爲 NONE 即可 -->
<security-constraint>
    <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>

保存後用默認的http訪問你的web項目 就會自動跳轉用https訪問(我這裏直接訪問的是http://127.0.0.1/項目)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章