HTTPS是基於SSL的HTTP協議,簡單的說就是HTTP的安全版。HTTPS協議由當時註明廠商網景公司首創,雖然和微軟的競爭中敗北,但是HTTPS技術卻得到了傳承,當前幾乎所有的瀏覽器和服務器都能夠很好的支持HTTPS協議
依託SSL協議,Https協議能夠確保整個通信過程都是經過加密的,祕鑰隨機產生,並且能過通過數字證書驗證通信雙方的身份,以確保信息安全。其中證書中包含證書所代表的一端的公鑰,以及一些基本信息。通過數字簽名能夠校驗證書的真實性。通信的內容使用對稱加密的方式進行加密,通信兩端約定好通信密碼後,通過公鑰對密碼進行加密傳輸,只有改公鑰的私鑰,也就是通信的另一端能夠解密獲得通信密碼,這樣既保證通信的安全,也使加密性能和時間成本可控。
HTTPS既支持單項認證,也支持雙向認證
單項認證需要服務端提供證書即可,客戶端通過服務端證書校驗服務端身份;
雙向認證服務端和客戶端都需要提供證書,需要互相校驗身份
以Tomcat爲例,修改server.xml
首先,去掉註釋
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
修改爲
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\Tools\Web\ssl\tomcat.keystore"
keystorePass="tomcat"
ciphers="tomcat"/>
其中
屬性 | 描述 |
clientAuth | 如果設爲true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進行身份驗證 |
keystoreFile | 指定keystore文件的存放位置,可以指定絕對路徑,也可以指定相對於<CATALINA_HOME>(Tomcat安裝目錄)環境變量 的相對路徑。如果此項沒有設定,默認情況下,Tomcat將從當前操作系統用戶的用戶目錄下讀取名爲“.keystore”的文件。 |
keystorePass | 指定keystore的密碼,如果此項沒有設定,在默認情況下,Tomcat將使用“changeit”作爲默認密碼。 |
sslProtocol | 指定套接字(Socket)使用的加密/解密協議,默認值爲TLS,用戶不應該修改這個默認值。 |
ciphers | 指定套接字可用的用於加密的密碼清單,多個密碼間以逗號(,)分隔。如果此項沒有設定,在默認情況下,套接字可以使用任意一個可用的密碼。 |
注意HTTPS的默認端口443
啓動動本場tomcat,在瀏覽器中輸入:https://localhost/ ,即可訪問