這裡我們使用是阿裡雲的雲伺服器ECS,使用的是阿裡雲的SSL證書來給伺服器配置https。
https的預設端口是443。而我們也常常看見8443端口。其實二者的差別在于8443端口在通路時需要加端口号,相當于http的8080,不可通過域名直接通路。而443端口在通路時不需要加端口号,相當于http的80,可通過域名直接通路。
預設端口為443不代表着其他端口不能配置https。 有時候我們不僅需要為前端tomcat伺服器配置https,而且需要為後端伺服器配置https。因為使用了https域名的前端頁面,頁面内将不能發送http請求。是以我們需要為後端端口配置https。
HTTPS的頁面發送不了HTTP請求?——關于混合内容(文章連結)
下面我們就介紹如何為tomcat配置https:
①為tomcat配置https。
②為springboot的内置tomcat配置https。(詳情連結)
1.1 在阿裡雲控制台中,搜尋 ssl 證書。可以申請免費型DV SSL證書,在證書申請時填入需要配置https的域名。
1.2 下載下傳SSL證書(tomcat型),下載下傳的壓縮包裡包含一個pfx檔案(不要打開和修改) 和一個txt檔案。pfx檔案為證書檔案,txt檔案中内容為證書密鑰。
1.3 在tomcat的安裝路徑下建立一個cert檔案(與bin、webapps檔案夾同級)。
将pfx檔案放入其中。
1.4 修改tomcat的server.xml檔案,新添端口443作為https端口。而我們一般使用80作為http端口。
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="/usr/tomcat/apache-tomcat-8.5.40/cert/2119113_www.****.pfx"
keystoreType="PKCS12"
keystorePass="*****"
clientAuth="false"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
- keystoreFile :為證書檔案根路徑 (沒親測過相對于tomcat的根路徑)
- keystorePass :證書密鑰
因為使用了443作為https端口,是以将server.xml中所有8433端口更改為443端口。比如:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="443" />
1.5 在tomcat的web.xml中填寫如下代碼:
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<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>
1.6重新開機 tomcat,即可。還有很重要的一點是,設定https的端口不能被其他程序占用,且該端口對外開放(防火牆)