一、tomcat版本:apache-tomcat-8.5.8-windows-x64
二、SSL证书申请
- 用JDK自带的keytool工具生成证书,可以用任意一台安装jdk的主机生成证书,无需申请,坏处是生成的证书没有通过认证,浏览器访问时,会出现不可信证书提醒,生成过程参考:http://lixor.iteye.com/blog/1532655;
2、在第三方申请证书,国内外大多证书颁发单位都是收费的,也有部分是首年免费,本文档演示的是在腾讯云DV SSL 域名型证书申请,首年免费,其他颁发单位参考:Let's Encrypt、StartSSL、COMODO PositiveSSL、CloudFlare SSL、Wosign沃通SSL等。
三、腾讯云证书申请过程
1、登录腾讯云,选择SSL证书管理(https://console.qcloud.com/ssl)
2、点击申请证书
3、填写证书信息
注:
3.1 通用名称为需要配置https协议访问服务的域名
3.2 证书备注名随便填,方便记忆即可
3.3 私钥密码填写后必须留存,配置tomcat时需要用到
4、域名身份验证,第一种是手动DNS验证,这种方式需要用户在域名上解析一条腾讯云制定的二级域名,由于映射方式CNAME方式万网不提供,所以如果域名是在腾讯云上管理的可以采用这种方式,如果不是建议采用第二种文件验证
5、文件验证
以下是官方提供的文件验证方法:
https://www.qcloud.com/document/product/400/4142#3.-.E6.96.87.E4.BB.B6.E9.AA.8C.E8.AF.81
注意:
5.1 以tomcat为例,上诉的意思可以在Tomcat/webapp/Root文件夹下创建/.well-known/pki-validation文件目录,创建文件flieauth.htm,文件的内容是:根据证书详情中提供填写。
5.2 WINDOWS操作系统手动是无法创建.开头的文件夹,需要切换到DOS下,使用命令创建;
> md .well-known
5.3 windows server默认创建文本时隐藏了后缀名,所以最好是在本地创建好文件(确定文件后缀名是.htm)再放到服务器上;
5.4 配置好之后启动tomcat,访问路径,查看是否操作成功(tomcat中conf/server.xml入口端口需改成80);
5.5 配置成功后会腾讯云会自动进行验证,验证通过后会有短信提醒,时间大概是几分钟。
6、证书成功申请后,下载下来,将其中tomcat的证书解压到tomcat/conf目录下;
7、证书成功申请后,在证书管理列表中点击颁发进行证书颁发;
8、证书成功申请后,点击分配项目,分配到默认项目。
四、Tomcat配置
1、经过上述步骤我们已经得到了所需要的证书,将证书.jks文件放到tomcat/conf目录下
2、打开conf/server.xml文件进行编辑
2.1 配置80端口节点修改如下
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
2.2 在80端口配置节点下添加如下配置
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/www.abc.com.jks" certificateKeyAlias="www.abc.com"
certificateKeystorePassword="sunrise2017"
type="RSA" />
</SSLHostConfig>
</Connector>
注:certificateKeystoreFile是证书.jks文件的保存位置,此处是conf目录,如果是其他地址请填写完整目录;certificateKeyAlias是证书别名,建议放访问域名;certificateKeystorePassword是证书密码,在证书申请时填写保存的(很重要)。
2.3 修改
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
2.4 修改后启动tomcat,以https协议通过443端口访问tomcat资源,如果正常访问,则配置成功
3、80端口到https端口的自动映射
上述配置完成之后80端口和443端口是单独访问的,为了让用户在访问80端口时自动跳转443端口,需要修改conf/web.xml文件,打开文件在倒数第二行添加如下代码即可:
<security-constraint>
<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>
4、重启tomcat配置完成
<strong>特别注意:</strong>
1.此处配置的域名必须完成备案,否则80端口无法访问(如果没有备案,在申请证书验证的时候就无法通过,验证需要通过域名的80端口访问);
2.此处申请的证书绑定的是www顶级域名,亲测配置完成后二级域名也可使用https访问,但是会提示证书不安全,如有需要建议单独申请