一、tomcat版本:apache-tomcat-8.5.8-windows-x64
二、SSL證書申請
- 用JDK自帶的keytool工具生成證書,可以用任意一臺安裝jdk的主機生成證書,無需申請,壞處是生成的證書沒有通過認證,瀏覽器訪問時,會出現不可信證書提醒,生成過程參考:http://lixor.iteye.com/blog/1532655;
2、在第三方申請證書,國內外大多證書頒發單位都是收費的,也有部分是首年免費,本文檔演示的是在騰訊云DV SSL 域名型證書申請,首年免費,其他頒發單位參考:Let's Encrypt、StartSSL、COMODO PositiveSSL、CloudFlare SSL、Wosign沃通SSL等。
三、騰訊云證書申請過程
1、登錄騰訊云,選擇SSL證書管理(https://console.qcloud.com/ssl)
2、點擊申請證書
3、填寫證書信息
注:
3.1 通用名稱為需要配置https協議訪問服務的域名
3.2 證書備注名隨便填,方便記憶即可
3.3 私鑰密碼填寫后必須留存,配置tomcat時需要用到
4、域名身份驗證,第一種是手動DNS驗證,這種方式需要用戶在域名上解析一條騰訊云制定的二級域名,由于映射方式CNAME方式萬網不提供,所以如果域名是在騰訊云上管理的可以采用這種方式,如果不是建議采用第二種文件驗證
5、文件驗證
以下是官方提供的文件驗證方法:
https://www.qcloud.com/document/product/400/4142#3.-.E6.96.87.E4.BB.B6.E9.AA.8C.E8.AF.81
注意:
5.1 以tomcat為例,上訴的意思可以在Tomcat/webapp/Root文件夾下創建/.well-known/pki-validation文件目錄,創建文件flieauth.htm,文件的內容是:根據證書詳情中提供填寫。
5.2 WINDOWS操作系統手動是無法創建.開頭的文件夾,需要切換到DOS下,使用命令創建;
> md .well-known
5.3 windows server默認創建文本時隱藏了后綴名,所以最好是在本地創建好文件(確定文件后綴名是.htm)再放到服務器上;
5.4 配置好之后啟動tomcat,訪問路徑,查看是否操作成功(tomcat中conf/server.xml入口端口需改成80);
5.5 配置成功后會騰訊云會自動進行驗證,驗證通過后會有短信提醒,時間大概是幾分鐘。
6、證書成功申請后,下載下來,將其中tomcat的證書解壓到tomcat/conf目錄下;
7、證書成功申請后,在證書管理列表中點擊頒發進行證書頒發;
8、證書成功申請后,點擊分配項目,分配到默認項目。
四、Tomcat配置
1、經過上述步驟我們已經得到了所需要的證書,將證書.jks文件放到tomcat/conf目錄下
2、打開conf/server.xml文件進行編輯
2.1 配置80端口節點修改如下
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
2.2 在80端口配置節點下添加如下配置
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/www.abc.com.jks" certificateKeyAlias="www.abc.com"
certificateKeystorePassword="sunrise2017"
type="RSA" />
</SSLHostConfig>
</Connector>
注:certificateKeystoreFile是證書.jks文件的保存位置,此處是conf目錄,如果是其他地址請填寫完整目錄;certificateKeyAlias是證書別名,建議放訪問域名;certificateKeystorePassword是證書密碼,在證書申請時填寫保存的(很重要)。
2.3 修改
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
2.4 修改后啟動tomcat,以https協議通過443端口訪問tomcat資源,如果正常訪問,則配置成功
3、80端口到https端口的自動映射
上述配置完成之后80端口和443端口是單獨訪問的,為了讓用戶在訪問80端口時自動跳轉443端口,需要修改conf/web.xml文件,打開文件在倒數第二行添加如下代碼即可:
<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>
4、重啟tomcat配置完成
<strong>特別注意:</strong>
1.此處配置的域名必須完成備案,否則80端口無法訪問(如果沒有備案,在申請證書驗證的時候就無法通過,驗證需要通過域名的80端口訪問);
2.此處申請的證書綁定的是www頂級域名,親測配置完成后二級域名也可使用https訪問,但是會提示證書不安全,如有需要建議單獨申請