基于aliyun服务器,tomcat配置ssl证书
[toc]
申请DV SSL免费证书(按阿里云流程即可)
- 证书服务
- 购买证书
- 购买免费1年DV SSL证书
- 绑定域名
- 补全信息
域名验证方式,一种是DNS验证(域名DNS解析自动生成CNAME记录),一种是文件验证(手动上传文件到指定目录)
- 签发后下载 7.0支持pfx, 7.0以后用java jdk将PFX格式证书转换为JKS格式证书
配置tomcat server文件
http端口默认80 https端口默认443
tomcat6
- 使用java jdk将PFX格式证书转换为JKS格式证书(windows环境注意在%JAVA_HOME%/jdk/bin目录下执行)
keytool -importkeystore -srckeystore 214040351970175.pfx -destkeystore your-name.jks -srcstoretype PKCS12 -deststoretype JKS
2.server.xml 配置
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="cert/your-name.jks"
keystorePass="your-password"
clientAuth="false"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
tomcat7/8 通用
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="cert/your-name.pfx" //pfx证书
keystoreType="PKCS12"
keystorePass="your-password" //密钥
clientAuth="false"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
修改web.xml文件
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
将 URL 映射设为 /* ,整个应用都要求是 HTTPS 访问,而 transport-guarantee 标签设置为 CONFIDENTIAL 以便使应用支持 SSL。将 CONFIDENTIAL 改为 NONE 关闭 SSL。
cdn配置https
- 在阿里云CDN的基本信息中, 找到https安全加速, 点击编辑按钮.
- 使用文本编辑器打开之前下载xxx.pem文件, 将文件的内容copy到证书内容文本框内.(注意去掉—–END CERTIFICATE—–与—–BEGIN CERTIFICATE—–之间的换行符)
- 使用文本编辑器打开之前下载xxx.key文件, 将文件的内容copy到私钥文本框内
- 建议跳转类型设置为默认, 这样保证在程序完全切换完成之前兼容性.
- 保存了之后, 使用https去访问任意的一个静态资源, 测试看是否正常.
前端修改
请求文件链接
1.加载资源时, 去掉显式指定访问协议的部分,这样浏览器就能根据主页面协议类型来自动选择HTTP/HTTPS资源 例如:
<img src="http://static.example.com/banner.jpg" />
<!-- 调整为 -->
<img src="//static.example.com/banner.jpg" />
- 或者可以通过upgrade-insecure-requests这个CSP 指令, 强制让页面上所有的http访问转换为https访问
在服务器的响应头中加入:
header("Content-Security-Policy: upgrade-insecure-requests");
或者页面中加入 meta 头:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />