单个Tomcat配置多个域并配置多个证书(单IP)

情节:HTTPS 之前是没有想配置的但是我在家里测试网站的时候发现网站上有广告,然而我并没有投广告,在公司还有流量测试并没有广告所以我就怀疑是我家的宽带运营商植入了广告,我在浏览的时候发现并不是所有的网站都有广告如(百度,微博)我就想是不是带 HTTPS 的都没有广告所以我就想把我的网站也使用 HTTPS 加密形式,我在网上找了好多资料我都没有测试成功,然后我结合官网与网上的资料测试成功了,所以在此地记录一下。

正文开始

1.准备证书

1)因为我们是小成本网站所以选择免费的证书,现在好多网上都有免费的了,我选择的是阿里云—CA 证书

2)点击购买证书

3)点击免费证书(购买数量可以多个根据自己的域名个数,这里一个只能绑定一个普通域名)

4.进入控制台补全信息

5.补全信息要注意的是普通域名的定义

6.证书审核通过后我们下载 TOMCAT 证书

2.配置 Tomcat(我的是 Tomcat9)

1)我们把下载好的证书放到 tomcat–>conf–>cert( 自己新建)目录下

2)打开 server.xml 进行配置找到如图位置在下面添加代码

3)写配置代码(你需要修改的就是 defaultSSLHostConfigName:默认域名多个 SSLHostConfig 必须填此属性 hostName:域名 certificateKeystoreFile:证书路径最好写绝对的 certificateKeystorePassword:证书密码)这就配置出了多个域名多个证书了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<Connector port="443" protocol="HTTP/1.1" maxThreads="150" SSLEnabled="true" URIEncoding="UTF-8"  scheme="https" secure="true" defaultSSLHostConfigName="www.luoruiyuan.cn">

<SSLHostConfig honorCipherOrder="false" hostName="www.luoruiyuan.cn">
<Certificate certificateKeystoreFile="C:\Program Files\Tomcat\conf\cert\214XXXXXX35.pfx" certificateKeystorePassword="214XXXXXX35"/>
</SSLHostConfig>

<SSLHostConfig honorCipherOrder="false" hostName="mbk.luoruiyuan.cn">
<Certificate certificateKeystoreFile="C:\Program Files\Tomcat\conf\cert\214XXXXXX35.pfx" certificateKeystorePassword="214XXXXXX35"/>
</SSLHostConfig>

<SSLHostConfig honorCipherOrder="false" hostName="luoruiyuan.cn">
<Certificate certificateKeystoreFile="C:\Program Files\Tomcat\conf\cert\214XXXXXX35.pfx" certificateKeystorePassword="214XXXXXX35"/>
</SSLHostConfig>

<SSLHostConfig honorCipherOrder="false" hostName="movie.luoruiyuan.cn">
<Certificate certificateKeystoreFile="C:\Program Files\Tomcat\conf\cert\214XXXXXX35.pfx" certificateKeystorePassword="214XXXXXX35"/>
</SSLHostConfig>

<SSLHostConfig honorCipherOrder="false" hostName="file.luoruiyuan.cn">
<Certificate certificateKeystoreFile="C:\Program Files\Tomcat\conf\cert\214XXXXXX35.pfx" certificateKeystorePassword="214XXXXXX35"/>
</SSLHostConfig>

</Connector>

3.代码修改

因为我们要同时支持 HTTP 与 HTTPS 所以在 a、 img、ajax 请求等一定要注意不能在前面加http://或者https://直接使用//开头如图

4.在浏览器中输入网址默认跳到 https 访问

1)打开 Tomcat—>conf—>web.xml,在该文件后面加上这样一段:

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>

5.最终效果

-------------本文结束感谢您的阅读-------------
欢迎您扫一扫下面的微信公众号,订阅我的博客!
Dongxiang Zhao wechat
坚持原创技术分享,您的支持将鼓励我继续创作!
分享到:
0%