在阿里云申请了免费ssl证书,想搞以下https访问,根据阿里给的文档,测试了很久,也没有成功,这里分享一下我的填坑之路: 阿里云证书配置tomcat的文档连接: https://yundun.console.aliyun.com/?p=cas#/cas/download/1535905042282?regionId= 以下是阿里云的解释:
Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。
文件说明:
1. 证书文件1535905042282.pem,包含两段内容,请不要删除任何一段内容。
2. 如果是证书系统创建的CSR,还包含:证书私钥文件1535905042282.key、PFX格式证书文件1535905042282.pfx、PFX格式证书密码文件pfx-password.txt。
1、证书格式转换
在Tomcat的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,附件中只包含1535905042282.pem文件,还需要将私钥文件拷贝到cert目录,命名为1535905042282.key;如果是系统创建的CSR,请直接到第2步。
到cert目录下执行如下命令完成PFX格式转换命令,此处要设置PFX证书密码,请牢记:
openssl pkcs12 -export -out 1535905042282.pfx -inkey 1535905042282.key -in 1535905042282.pem
2、PFX证书安装
找到安装Tomcat目录下该文件server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443"标签,增加如下属性:
keystoreFile="cert/1535905042282.pfx"
keystoreType="PKCS12"
#此处的证书密码,请参考附件中的密码文件或在第1步中设置的密码
keystorePass="证书密码"
完整的配置如下,其中port属性根据实际情况修改:
<Connector port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="cert/1535905042282.pfx"
keystoreType="PKCS12"
keystorePass="证书密码"
clientAuth="false"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
3、JKS证书安装(帮助)
( 1 ) 使用java jdk将PFX格式证书转换为JKS格式证书(windows环境注意在%JAVA_HOME%/jdk/bin目录下执行)
keytool -importkeystore -srckeystore 1535905042282.pfx -destkeystore your-name.jks -srcstoretype PKCS12 -deststoretype JKS
回车后输入JKS证书密码和PFX证书密码,强烈推荐将JKS密码与PFX证书密码相同,否则可能会导致Tomcat启动失败。
( 2 ) 找到安装 Tomcat 目录下该文件Server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443"标签,增加如下属性:
keystoreFile="cert/your-name.jks"
keystorePass="证书密码"
完整的配置如下,其中port属性根据实际情况修改:
<Connector port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="cert/your-name.jks"
keystorePass="证书密码"
clientAuth="false"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
( 注意:不要直接拷贝所有配置,只需添加 keystoreFile,keystorePass等参数即可,其它参数请根据自己的实际情况修改 )
4、 重启 Tomcat。
5、 通过 https 方式访问您的站点,测试站点证书的安装配置,如遇到证书不信任问题,请查看帮助视频。
--------------------------------------------------我自己搞了很久,也没有搞定,最后发现tomcat8.5和其他版本不同,-----------------------------------有点淡淡的忧伤---------
啥也不说了,直接上配置文件 配置文件一: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">
-------------------------到这里都是默认的------------------------不用理会--------------------- ------------------以下才是配置重点------- 1、修改默认的8080端口为80,因为域名都是80端口 2、修改默认的8443为443
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="443" protocol="HTTP/1.1"
maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="vjg-ceshi.tamiyun.com">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig hostName="vjg-ceshi.tamiyun.com" caCertificateFile="/service/tami-tomcat-8.5/cert/1535905042282.pem">
<Certificate certificateKeystoreFile="/service/tami-tomcat-8.5/cert/1535905042282.pfx"
certificateKeystoreType="PKCS12" certificateKeystorePassword="1535905042282" />
</SSLHostConfig>
</Connector>
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
<Engine name="Catalina" defaultHost="vjg-ceshi.tamiyun.com">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!-- #第一个虚拟主机 vgj-test.tamiyun.com /-->
```
<Host name="vjg-ceshi.tamiyun.com" appBase="/service/tami-tomcat-8.5/webapps/ROOT" unpackWARs="true" autoDeploy="true" deployXML="false">
<Alias>vjg-ceshi.tamiyun.com</Alias>
<Context path="" docBase="/service/tami-tomcat-8.5/webapps/ROOT" debug="0" reloadable="false" privileged="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
配置文件二:web.xml 这个配置文件可以使http的访问都转发到https中。
<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>
</web-app> #这个是文档中有的,要在这个之前添加
#原文连接地址 https://blog.csdn.net/u012811841/article/details/80389792