TOMCAT9.0 阿里云免费 SSL证书签发配置全过程(支持多证书,多虚拟主机)

1 篇文章 0 订阅
1 篇文章 0 订阅

关于SSL证的介绍我就不说了

在下一名学生党,家贫,买不起多域名证书,但是在配置时候遇到了各种各样的*******问题,反复配置了一个来月才成功,这里是一些经验总结

这是我的域名www.moyuge.net.cn,是在下与班级同学共同组建的一个兴趣工作室

这是我配置好的server.xml文件,给大家做一个参考(应该只有一条是可以正常访问的,另外两条都应该是不安全链接,因为我没申请那么多证书......)

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="443"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig hostName="moyuge.net.cn" >
<Certificate 
certificateKeystoreFile="conf/ssl/*****.pfx"
certificateKeystorePassword="*****"
certificateKeystoreType="PKCS12" />
</SSLHostConfig>
<SSLHostConfig hostName="neuread.moyuge.net.cn" >
<Certificate 
certificateKeystoreFile="conf/ssl/*****.pfx"
certificateKeystorePassword="*****"
certificateKeystoreType="PKCS12" />
</SSLHostConfig>
<SSLHostConfig>
<Certificate 
certificateKeystoreFile="conf/ssl/*****.pfx"
certificateKeystorePassword="*****"
certificateKeystoreType="PKCS12" />
</SSLHostConfig>
</Connector>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
<Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="HomePage" />
</Host>
<Host name="moyuge.net.cn"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Alias>moyuge.net.cn</Alias>
<Alias>www.moyuge.net.cn</Alias>
<Context path="" docBase="HomePage" />
</Host>
<Host name="neuread.moyuge.net.cn"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Alias>neuread.moyuge.net.cn</Alias>
<Context path="" docBase="NeuRead" />
</Host>
</Engine>
</Service>
</Server>

这里我把http端口已经设置到了80端口上,https443的部分不做详细解释了

一 申请证书

在阿里云控制台->安全(云盾)->CA证书 里购买


这里是免费的SSL证书,没有经济条件的学生党们建议考虑这个(找到的方式是先选择1个域名和Sys...那个品牌,之后上面可选项才会出现这个免费型),购买后,按照要求填写域名等,并按要求,在域名云解析上添加一条我也不知道是个啥的东西,等一段时间就会自动签发,全程都是电脑控制,没有人工,所以,配置正确,并且校验测试通过之后,很快就能完成签发,而且域名没完成备案的情况下似乎也能签发???


二 下载证书的Tomcat版本,如果你只需要配置一张证书的话,可以考虑按他下面说的去配置


(网页边框上的细节不要在意)

特别提示,这个网页上写的那串数字,和你下载到的所有文件的文件名,都是同样的,这串数字是你的证书密码,千万不要向他人展示!!!!

下载下来的文件应该是3个,分别是.pem .pfx .key

我这次推荐给大家的是利用.pfx配置的,其他两个文件也能配置,也有用,但是相互间很混乱,详细了解的话可以去官网看文档

详细配置过程:

1)证书配置

<Connector port="443"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig hostName="moyuge.net.cn" >
<Certificate 
certificateKeystoreFile="conf/ssl/*****.pfx"
certificateKeystorePassword="*****"
certificateKeystoreType="PKCS12" />
</SSLHostConfig>
<SSLHostConfig hostName="neuread.moyuge.net.cn" >
<Certificate 
certificateKeystoreFile="conf/ssl/*****.pfx"
certificateKeystorePassword="*****"
certificateKeystoreType="PKCS12" />
</SSLHostConfig>
<SSLHostConfig>
<Certificate 
certificateKeystoreFile="conf/ssl/*****.pfx"
certificateKeystorePassword="*****"
certificateKeystoreType="PKCS12" />
</SSLHostConfig>
</Connector>

把证书文件放到你的服务器上,任何位置都行,如果你采用复制我的代码,我是把证书文件放在conf文件夹中,新建了一个ssl文件夹

在 Connector 标签下配置 SSLHostConfig 标签,在SSLHostConfig 可以添加hostname属性和后文的 Host 配置对应

在SSLHostConfig 下配置 Certificate 标签 只需要写这3个属性 certificateKeystoreFile,certificateKeystorePassword,certificateKeystoreType,分别是 证书文件(.pfx结尾或者.keystore结尾),证书密码(直接复制密码串粘贴到双引号中就可以),证书类型,证书类型不要改变,按照我前面代码里写的PKCS12(如果文件是.keystore,那么不用写此项)

此部分特别提示:

一定不要把所有的Connector标签都写hostName属性,我的建议是留一条,也仅留一条不写hostName,系统会认定这条为default,如果没有这一条,tomcat对应ssl的那个自带的servlet会抛出异常,大致意思是没有找到[_default_]主机对用的SSLHostConfig,即使你有一条与后面的Host里配置的默认主机一致。

证书文件配置时候写的目录是你Tomcat所在的根目录,而不是conf文件夹,如果你像我一样,把证书文件放置在conf文件夹下的ssl文件夹中(ssl文件夹新建就行)

2)Host虚拟主机配置

应该是在Tomcat7.0版本开始的,Tomcat支持了多虚拟主机服务,这部分的配置如下

<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
<Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="HomePage" />
</Host>
<Host name="moyuge.net.cn"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Alias>moyuge.net.cn</Alias>
<Alias>www.moyuge.net.cn</Alias>
<Context path="" docBase="HomePage" />
</Host>
<Host name="neuread.moyuge.net.cn"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Alias>neuread.moyuge.net.cn</Alias>
<Context path="" docBase="NeuRead" />
</Host>
</Engine>

Realm一条应该是可以删掉吧?具体我不太清楚,如果有大神看到了,请评论下,我也挺想知道的,怕报错没敢删除。

Engine标签的defauleHost属性的意思就是下面有一条Host名与它的对应值相同,那一条是默认主机,在没有对应主机时候选择这一条。

Host标签,name是你的域名, appBase是你项目根目录,不同Host可以选择不同根目录,也可以同一个后面那两个属性保持不变就好

<Alias>标签中的是别名,也就是比如你配置了www.和was.两条解析(或者更多),但是他们的证书文件,访问文件夹都是一样的,就可以在Host上配置一个,下面用<Alias>写上其他几条域名

(这里主机名和别名似乎都不支持通配符,,不太清楚,文件里面Alias写多了,,但是不影响)

<Context>标签中docBase属性是主机的默认访问项目,也就是首页项目


文章就这么多,如果有错的地方,请多多指点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值