原创

Tomcat 8.5 部署多域名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>
复制代码
复制代码
<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>
复制代码
https://blog.51cto.com/zhanx/2287657

图片.png

图片.png

配置如下:

1
2
3
4
5
6
7
8
<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配置中做如下配置修改:

   图片.png

1
2
3
4
5
6
7
8
<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>,也就是倒数第二段里,加上这样一段



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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。

image.png

    测试过程中遇到的坑:

    1、配置多域名ssl证书时,指有一个域名访问生效,另外一个域名的证书为不安全证书。

     经多方测试Tomcat的8.5 jdk版本1.8.0 配置多域名多证书访问成功。

      使用Tomcat的9以上的版本不能成功,建议大家多测试。有好方案,配置可以留言
正文到此结束
该篇文章的评论功能已被站长关闭
本文目录