Tomcat部署多域名ssl證書
部署步驟:
1、搭建Tomcat環境。
2、申請域名證書。
3、部署域名的http訪問。
4、部署域名的https訪問。
5、強制使http跳轉至https。
具體操作如下:
1、搭建tomact環境。
這裏不做贅述,搭建可以所搜其他網絡資源。(我這裏的環境是Windows2012系統搭建的Tomcat環境)
2、申請域名證書。
域名證書這裏不在說明,(可以參考“Apache配置https證書並跳轉”)
3、部署域名的http訪問。
部署好Tomcat後,找到對應目錄下的conf文件找到server.xml文件修改對應的配置。
找到Host添加域名綁定配置
配置如下:
<Host name="域名" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="網站文件路徑"/> </Host> <Host name="域名" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="網站文件路徑"/> </Host>
測試域名訪問成功後,進行下一步測試。
4、配置域名https訪問。
現將域名的ssl證書放到Tomcat中的conf文件中。
在server.xml文件中找到ssl配置中做如下配置修改:
<Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="域名"> <SSLHostConfig hostName="域名"> <Certificate certificateKeystoreFile="conf/證書路徑以及名稱" certificateKeystorePassword="證書密碼" type="RSA"/> </SSLHostConfig> <SSLHostConfig hostName="域名"> <Certificate certificateKeystoreFile="conf/證書路徑以及名稱" certificateKeystorePassword="證書密碼" type="RSA"/> </SSLHostConfig> </Connector>
5、強制使http跳轉至https
到conf目錄下的web.xml。在</welcome-file-list>後面,</web-app>,也就是倒數第二段裏,加上這樣一段
<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>
再讓非ssl的connector跳轉到ssl的connector去。所以還需要前往server.xml進行配置:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
redirectPort改成ssl的connector的端口443,重啓後便會生效
訪問http域名自動跳轉至https。
測試過程中遇到的坑:
1、配置多域名ssl證書時,指有一個域名訪問生效,另外一個域名的證書爲不安全證書。
經多方測試Tomcat的8.5 jdk版本1.8.0 配置多域名多證書訪問成功。
使用Tomcat的9以上的版本不能成功,建議大家多測試。有好方案,配置可以留言