Loading...

Tomcat配置多个pfx证书,实现htpps

avatar

JimXu

2019-03-09

Other

Tomcat配置多个pfx证书,实现htpps

一、下载证书,这里不多介绍

二、这里说的是pfx证书的安装,目前我也只用过pfx,Tomcat版本8.5。

三、开始,先来看看配置1个https证书

1. 配置conf中的server.xml,修改如下

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

改为

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />

然后将

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

改为

<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

在这里将注释取消了

<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->

改成这样的

<Connector port="443"
		protocol="org.apache.coyote.http11.Http11Nio2Protocol"
		maxThreads="150"
		SSLEnabled="true">
		<SSLHostConfig>
             <Certificate certificateKeystoreFile="你证书的位置"
                         certificateKeystoreType="PKCS12" certificateKeystorePassword="你证书的密码" />
        </SSLHostConfig> 
	</Connector>

注:上面的certificateKeystoreType="PKCS12"适用于pfx证书,而jks证书应该是type="RSA" ,但是我并没有尝试过

然后就是修改 单个域名访问项目这样改

<Host name="访问域名"  appBase="webapps"
		unpackWARs="true" autoDeploy="true">
		<Context path="" docBase="访问项目名" />
		</Host>

多个域名访问同一个项目这样改

<Host name="www.baidu.com"  appBase="webapps"
		unpackWARs="false" autoDeploy="true">
		<Alias>baidu.com</Alias>
		<Alias>www.baidu.com</Alias>
		<Context path="" docBase="blog" reloadable="true"/>
		</Host>

其中的www.baidu.com 换成你自己的域名 保存,重启Tomcat可以手动输入https://你的域名 进行访问,但是很麻烦,希望输入 你的域名 直接跳到https访问

三、修改conf里面的web.xml

移动到最后一行是以结尾,在它上面一行加入以下代码

<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> 

保存重启,即可使用 你的域名 直接htpps访问

四、说说一个Tomcat安装多个pfx证书

修改2个地方即可

<Connector port="443"
		protocol="org.apache.coyote.http11.Http11Nio2Protocol"
		maxThreads="150"
		SSLEnabled="true">
		<SSLHostConfig>
             <Certificate certificateKeystoreFile="你证书的位置"
                         certificateKeystoreType="PKCS12" certificateKeystorePassword="你证书的密码" />
        </SSLHostConfig> 
        
        <SSLHostConfig hostName="你的第二个证书域名">
             <Certificate certificateKeystoreFile="你的第二个证书的位置"
                         certificateKeystoreType="PKCS12" certificateKeystorePassword="你的第二个证书的密码" />
        </SSLHostConfig> 
	</Connector>

注:主域名不要加hostName,不然2个项目都不能正常访问,至少我是这样,亲身踩过的坑

<Host name="第一个域名"  appBase="webapps"
		unpackWARs="false" autoDeploy="true">
		<Alias>www.第一个域名.com</Alias>
		<Alias>第一个域名.com</Alias>
		<Context path="" docBase="blog" reloadable="true"/>
		</Host>
		<Host name="第二个域名"  appBase="webapps"
		unpackWARs="false" autoDeploy="true">
		<Alias>第二个域名.com</Alias>
		<Context path="" docBase="emp" reloadable="true"/>
		</Host>

重启,保存就OK了!!!

Leave a message

tips:Your personal homepage URL will be publicly linked, but your email address will not be publicly displayed; your IP address will be saved, but only your current city name will be publicly displayed.

comment



Other article