Tomcat http改成使用https協議(SSL證書)

 

我們想要通過https訪問程序,首先需要獲得一個數字證書,自己給自己簽發而來的證書也叫自簽名ssl證書,這種類型的證書可以隨意簽發,不受任何約束和監督,也不受各大瀏覽器的信任,基本沒什麼安全性可言,所以https證書獲取不建議使用這種。

而由受信任的CA機構簽發的https證書,纔是用戶們正確的選擇。這種CA機構簽發證書需要經過一系列的審覈,而且是有有效期的,一般不超過2年,能兼容市面上大部分的瀏覽器,也就是受各大瀏覽器的信任,安全性有保障。目前比較受歡迎的幾大國際品牌有Symantec、Geotrust、Comodo、Thawte以及RapidSSL等。想要獲取靠譜的https證書可以從他們當中選擇一款。

我們這裏使用JDK自帶keytool工具,來創建本地SSL證書。

 

目錄

1 Window 10中Tomcat使用Https請求

2 Linux中Tomcat使用Https請求

3 Spring boot 內置Tomcat使用Https請求


 

1 Window 10中Tomcat使用Https請求

1.1 jdk中找到keytool.exe

進入到jdk的安裝目錄,也就是環境變量中配置%JAVA_HOME%/bin的目錄下,在bin目錄下按住shift+右鍵,打開Powershell窗口

 

1.2在打開的dos窗口中,輸入以下命令:

以下命令將生產一對非對稱密鑰和自我簽名的證書

keytool -genkey -v -alias keystoreKey -keyalg RSA -validity 3650 -keystore E:\tomcat\apache-tomcat-8.0.53\conf\tomcat.keystore

keytool -genkey:自動使用默認的算法生成公鑰和私鑰

-alias 名稱 :給證書取個別名,這裏設置的是keystoreKey

-keyalg:制定密鑰的算法,如果需要制定密鑰的長度,可以再加上keysize參數,密鑰長度默認爲1024位,使用DSA算法時,密鑰長度必須在512到1024之間,並且是64的整數倍

-validity:證書的有效日期,默認是90天,這裏設置的3650天

-keystore:參數可以指定密鑰庫的名稱,密鑰庫其實是存放祕鑰和證書文件,會將生成的證書存放到指定的目錄下。

 

1.3 輸入證書信息

注意:域名以tomcat地址爲例

在覈對信息的時候,如果直接Enter,或者輸入其它,會重新開始錄入信息

keystore指定證書存放目錄必須存在,否則報系統找不到錯誤

進入到tomcat\conf目錄下,發現證書已經存在

 

1.4 修改tomcat配置信息

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

 
 

找到以下代碼段

將註釋去掉後修改代碼如下: 這裏Https端口設置的是8443(https 訪問默認是443端口, HTTP 訪問默認是80)

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

 

增加了keystoreFile 和 keystorePass 兩個參數

keystoreFile :表示證書文件的放置位置

keystorePass :證書密鑰庫設置的密碼

注意:redirectPort 端口號和port端口號可以自定義,端口號必須相同

 

1.5 驗證https

進入到tomcat\bin目錄下啓動tomcat

http:啓動成功後在瀏覽器中輸入http://localhost:8080

 

Https:tomcat配置的端口爲8443,在瀏覽器中輸入https://localhost:8443/

點擊高級->繼續前往localhost(不安全)進入到tomcat

在谷歌瀏覽器查看證書信息

點擊不安全->選擇證書

可以看到我們配置的證書信息,以及有效期

 

 

1.6將HTTP訪問跳轉到HTTPS訪問

打開tomcat\conf目錄,找到web.xml

找</welcome-file-list>標籤

在</welcome-file-list>標籤下添加如下信息

<!--強制使用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://localhost:8080 會自動跳轉到 https://localhost:8443/

 

2 Linux中Tomcat使用Https請求

Linux中配置Tomcat和 Window 中是一樣的,可以直接按照window步驟操作

務必使用root用戶連接到虛擬機後,進入到jdk安裝目錄bin目錄下,直接使用命令來生成SSL證書,唯一的區別是在安裝證書的過程中,可能語言不同(具體依虛擬機使用語言爲準)例:

需要注意的是linux和window路徑的不同,例:

keytool -genkey -v -alias keystoreKey -keyalg RSA -validity 3650 -keystore /tomcat/apache-tomcat-8.0.53/conf/tomcat.keystore

配置完成後別忘記在虛擬器中開啓Https端口號

 

3 Spring boot 內置Tomcat使用Https請求

3.1 使用JDK自帶keytool工具,創建本地SSL證書,生成方法參考Window 10 步驟

 

3.2 將生成的tomcat.keystore文件拷貝到springboot項目根目錄下,和pom.xml同級

 

3.3 修改application.properties文件,添加一下信息

#http端口號 / spring boot 默認端口號8080
#server.port=8081

#https端口號
server.port=8443

#https證書信息
#設定持有SSL certificate的key store的路徑
server.ssl.key-store=tomcat.keystore
#訪問key store中key的密碼.
server.ssl.key-store-password=123456
#設定key store的類型.
server.ssl.key-store-type=JKS
#設定key store中key的別名
server.ssl.key-alias=keystoreKey

 

3.4 啓動服務以後,https通過訪問 https://localhost:8443來訪問項目

 

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