1. 程式人生 > >https連接器

https連接器

jdk local 否則 連接 bsp alt 技術分享 進行 connector

非對稱性加密:A生成一份公私鑰,將公鑰交給需要進行數據傳輸的B,B發送數據時先用公鑰對數據進行加密,然後發送給A,再由A使用私鑰進行解密。

但存在漏洞即B如何確認公鑰是由A提供的。因此需要一個第三方機構(CA機構,即證書授權中心)來進行保證。A先將公鑰發送給CA機構,CA機構向A確認這是它所發的公鑰後,會生成一份數字證書,證書裏包含了CA的認證簽名與B的公鑰,A再將這個數據證書發送給B,此時B就可以根據CA的認證簽名確認公鑰來自於A。

HTTPS:

瀏覽器想要對數據加密後再發送給服務器,服務器首先會出示一份數字證書給瀏覽器,瀏覽器根據上面的公鑰對數據加密,然後再發送給服務器。

因此,首先我們要做的事情就是生成一份數字證書。

數字證書:

在jdk1.4以後的版本上,包含了一個數字證書的生成工具——keytool。該工具位於<java_home>/bin/keytoo.exe目錄下。

如果服務器已經配置好<java_home>,可以進行windows下的命令行窗口,輸入命令:

keytool -genkey -alias tomcat -keyalg RSA

然後根據圖片內容進行配置

技術分享圖片

此時再進入操作系統的用戶下,通常是C:\Users\Administrator,會看到裏面有一個文件.keystore。

可以輸入命令對它進行查看:

keytool -list -keystore .keystore

技術分享圖片

將該文件復制粘貼到tomcat的conf目錄下

技術分享圖片

打開server.xml文件,配置https連接器,進入如下配置

    <Connector port="2019" protocol="org.apache.coyote.http11.Http11NioProtocol" 
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 
               clientAuth="false" sslProtocol="TLS"
               keystoreFile
="conf/.keystore" keystorePass="******" />

其中:

port=2019,配置https連接的端口為2019,這個連接器接收到瀏覽器請求後,將向瀏覽器出示一份數字證書,瀏覽器利用數字證書裏的公鑰來進行加密。

keystoreFile="conf/.keystore",指明密鑰庫所在的文件路徑。

keystorePass="******",指明密鑰庫的訪問密碼。

保存配置文件後啟動tomcat。

此時,首先訪問http通道的8080端口,是可以正常打開。

技術分享圖片

再訪問https通道的2019端口,瀏覽器會提示不安全。這是由於證書是我們手工生成的,沒有經過CA的認證,瀏覽器認為訪問這個主機是不安全的。我們可以選擇下面的高級,然後在裏面點擊繼續前往即可。

技術分享圖片

此時的2019端口也可以正常訪問

技術分享圖片

用戶也可以選擇安裝數字證書,這樣之後的訪問都將不會再顯示證書錯誤。具體方法這裏不做贅述。

同時,如果tomcat配置了如上的https通道,最好是將http通道刪除,否則位於webapp下面的項目,不僅可以被https通道訪問,也可以被http通道訪問,失去了我們配置https的意義。

如在webapp下有項目testweb,則它的訪問路徑http://localhost:2018/testweb和https://localhost:2019/testweb都是可以正常訪問,唯一的不同在於後者進行了數據加密,前者沒有加密。

https連接器