Tomcat版本:apache-tomcat-9.0.27
jdk版本:1.8.0_212
瀏覽器:火狐
1. 生成證書
https協議需要證書,開發時我們可以使用jdk自帶的keytool工具生成一個證書來進行測試;
首先確保本地有jdk的環境,可以使用java -version來查看,然後運行以下代碼,姓氏名稱什麼的隨便填寫即可.
keytool -genkeypair -alias testKey -keyalg RSA -storepass 123456 -keyalg RSA -keysize 2048 -validity 3650 -keystore ./testKey.jks
<!--
-alias testKey:證書項的名字,必填項
-keyalg RSA:證書籤名算法,tomcat建議RSA
-storepass 123456:密鑰庫密碼,也就是等下要生成的test.keystore的訪問密碼,妥善保管
-validity 3650:證書有效期,3650天,即10年
-keystore ./testKey.jks:要生成的文件的位置,./test.keystore表示存儲在當前目錄下
-->
然後我們可以看到有提示信息,運行提示信息裏面的代碼
keytool -importkeystore -srckeystore ./testKey.jks -destkeystore ./testKey.jks -deststoretype pkcs12
可以看到已經成功生成證書"testKey.jks"
2. 配置https連接器
2.1 將生成的testKey.jks密鑰庫文件拷貝到Tomcat服務器的conf目錄下
2.2 修改server.xml文件,配置https連接器
<!-- 註釋掉http連接器 -->
<!--
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- 釋放https連接器 -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
修改https連接器的端口號、祕鑰庫文件路徑,及配置祕鑰的口令(就是生成祕鑰文件時設置的口令)
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/testKey.jks"
type="RSA" certificateKeystorePassword="123456" />
</SSLHostConfig>
</Connector>
3. 測試
使用http訪問,我們看到是無法訪問成功的,返回了報錯信息
使用https訪問,因我們是自己生成的證書,因此瀏覽器給了提示信息,
我們無視即可,點擊高級-->接受風險繼續
可以看到我們通過https成功訪問了頁面