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/項目)