環境
阿里雲centos7.4
域名也是阿里申請的
jdk1.8
tomcat8.5
1.申請證書
登錄到阿里雲的域名管理,可以看到已經申請過得域名,我這里第一個已經配置了ssl,第二個未配置,點擊更多,進入ssl證書的申請
我們這里申請免費的證書(家里沒礦QAQ,只能用免費的)
填寫綁定的域名
鼠標點點就可以提交申請,審核通過后就可以到這里查看
2.下載證書
在已簽發的證書處,找到下載,因為我們是要配置tomcat的,所以就下對應的版本
3.導入證書
下載證書到本地后,解壓得到兩個文件,一個是.pfx文件,一個是密碼文件
將文件上傳到centos,我是將文件保存到服務器對應tomcat下的cert文件夾中
4.server.xml配置
原來端口是8080,改為80,可以免去輸入時不用帶端口就能直接訪問,同理,重定向端口原來時8443,改為443
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443"/>
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="www.xxx1.cn">
<SSLHostConfig hostName="www.xxx1.cn">
<Certificate certificateKeystoreFile="{你下載的pfx文件的絕對路徑,例如:/usr/local/tomcat/cert/xxx1.pfx}" certificateKeystorePassword="{你下載的pfx文件的密碼}" certificateKeystoreType="PKCS12" certificateKeyAlias="alias"/>
</SSLHostConfig>
</Connector>
如果一個tomcat要被兩個域名映射,可以這樣添加
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443"/> <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="www.xxx1.cn"> <SSLHostConfig hostName="www.xxx1.cn"> <Certificate certificateKeystoreFile="{你下載的pfx文件的絕對路徑,例如:/usr/local/tomcat/cert/xxx1.pfx}" certificateKeystorePassword="{你下載的pfx文件的密碼}" certificateKeystoreType="PKCS12" certificateKeyAlias="alias"/> </SSLHostConfig> <SSLHostConfig hostName="www.xxx2.cn"> <Certificate certificateKeystoreFile="{你下載的pfx文件的絕對路徑,例如:/usr/local/tomcat/cert/xxx2.pfx}" certificateKeystorePassword="{你下載的pfx文件的密碼}" certificateKeystoreType="PKCS12" certificateKeyAlias="alias"/> </SSLHostConfig> </Connector>
往下還要配置,將所有的跳轉都由443處理
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
5.web.xml配置
打開server.xml同個目錄下的web.xml
在
</welcome-file-list>
下添加
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <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>
6.添加端口
阿里雲開放443端口,登錄后阿里雲esc服務器管理,根據自己需求添加規則
回到centos防火牆設置
查看防火牆開啟的所有端口
firewall-cmd --zone=public --list-ports
添加開放的端口(添加443端口)
firewall-cmd --zone=public --add-port=443/tcp --permanent
刷新配置
firewall-cmd --reload
7.重啟tomcat
在tomcat目錄bin下執行
./shutdown.sh
./startup.sh
8.測試訪問
如果地址前加https能訪問成功,說明tomcat配置ssl證書成功了。
ps:
1.tomcat8是個分水嶺,8以上和8以下配置時不一樣的,可以參考官網的手冊
tomcat7以及以下的配置:https://help.aliyun.com/knowledge_detail/95496.html
tomcat8的以及以上的配置:https://help.aliyun.com/document_detail/102939.html