在tomcat中加入SSL证书,能够用https方式访问域名,增长域名的安全性。固然也有不少应用要求https访问,也是安全性的考虑。阿里云和腾讯云都提供SSL证书,还有一些其余的大公司也提供,我这里以腾讯云的SSL证书为例,说一下整个申请及设置的流程。web
第一步,申请免费的SSL证书。apache
https://buy.cloud.tencent.com/ssl?fromSource=ssl,tomcat
须要登陆才能申请,没有登陆的状况下点击免费快速申请,会跳转到登陆页面,登陆后,会出要求填写一些信息,通用名称是须要绑定的域名,申请邮箱就是本身的邮箱,证书备注名能够填写,为了方便查看,没有特别的用途。私钥密码须要牢记,后面还会用到,好比咱们写abcdef,安全
点击下一步,会出现选择验证方式,能够手动DNS验证,也能够文件验证。服务器
你们能够查看详细说明,DNS验证应该简单些,能够直接在腾讯云上操做,分为手动DNS验证和自动DNS验证。我采用的是文件验证,也就是把文件下载下来,放到tomcat中进行验证的方式。选择文件验证,而后确认申请。出现如下的页面,平台会提供一个fileauth.txt文件,文件内容以下所示。app
按照提供的操做指引,一步步操做。dom
这一步主要是把fileauth.txt放到咱们申请的域名的服务器规定目录下,而后平台会扫描这个文件,若是能扫描到,就会提供一个SSL证书。这个时间应该比较快,有几分钟就差很少能经过审核,提供SSL证书下载。阿里云
第二步,将SSL证书加入到tomcat中。url
经过审核后,就会出现SSL证书已颁发,提供了证书的下载。server
证书下载后,是一个压缩文件,解压后的目录结构。
在根目录有一个xxx.com.csr的文件,在tomcat目录下有一个xxx.com.jks的文件,咱们就使用jks这个SSL证书。
在tomcat中安装SSL证书,大致按照指引文档就能够,略有区别。地址https://cloud.tencent.com/document/product/400/4143。
配置SSL链接器,将xxx.com.jks文件存放到conf目录下,而后配置同目录下的server.xml文件:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf/www.domain.com.jks"
keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
此处,须要修改的地方主要有三处。Protocol,keystoreFile,keystorePass。
protocol="org.apache.coyote.http11.Http11Protocol"
keystoreFile="conf/xxx.com.jks",就是放到conf目录下的SSL证书文件。
keystorePass="abcdef" ,就是前面设置的密钥密码。
到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>
这步目的是让非ssl的connector跳转到ssl的connector去。因此还须要前往server.xml进行配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
redirectPort改为ssl的connector的端口443,重启后便会生效。