证书申请

现在在七牛云与腾讯上可以申请免费一年的域名证书。于是把本博客网站迁移到https协议上来,因为使用的照片还是在http上,所以浏览器仍然提示不是完全安全,规划图床稍后迁移。

  1. 申请

申请腾讯云的ssl,申请时选择dns认证是最快的,只要解析设置正确,几分钟就会颁发证书。而设置文件认证会等待很长时间。

目前免费的证书都是单域名,即不能设置通用 *.example.com域名作为网址。

  1. 部署

在平台上申请好之后,就可以下载证书公私玥了。然后部署到网站或者CDN上。

腾讯云给的证书文件包含不同容器

  • Tomcat为keep0.cn.jks文件

  • Nginx为2_keep0.cn.key与1_keep0.cn_bundle.crt文件

  • IIS为keep0.cn.pfx文件

  • Apache为1_root_bundle.crt与2_keep0.cn.crt与3_keep0.cn.key文件

本网站用的是tomcat,所以将keep0.cn.jks文件上传到容器服务器。

tomcat部署ssl

修改 tomcat 服务器的 server.xml 文件

1
2
3
4
5
6
7
8
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
<Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/tomcat.jks" certificateKeyAlias="1"
certificateKeystorePassword="123456" type="RSA" />
</SSLHostConfig>
</Connector>
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

注意:
443 端口配置 protocol 属性值是 Http11Nio2Protocol
Certificate 标签 certificateKeyAlias 属性值通过查询 jks 文件信息得到
Certificate 标签 certificateKeystorePassword 属性值是 生成 jks 文件时设置的密码
Certificate 标签 type 属性值通过查询 jks 文件信息得到

然后重启tomcat。

CDN部署ssl

使用CDN服务的网站,须在CDN服务商那里设置https。

进入七牛控制台,将腾讯云上申请的证书上传到自有证书。但没有pem格式证书。只有crt证书。做一下操作:

CER / CRT 格式证书转换为 PEM 格式

对于 CER / CRT 格式的证书,您可通过直接修改证书文件扩展名的方式进行转换。例如,将“server.crt”证书文件直接重命名为“server.pem”即可。

或者直接打开编辑,复制里面内容。

然后设置CDN,开启https,开启强制转https。

之后网站就会以https访问,单因为是混合请求,http与https资源同时存在(http的图床)。导致网站并不是完全安全,后面再计划迁移图床。

扩展知识:

https://blog.csdn.net/qq_30683393/article/details/89762951

…然而,当使用CDN(“中间人”)时,CDN服务器切断HTTPS通信的中间,并将HTTPS分成两部分:最终用户和CDN代理之间的前端通信服务器…..

自定义证书要求网站所有者将其证书和私钥上载到CDN提供商。实质上,在网站和CDN提供商之间共享私钥违反了公钥加密的基本设置。实际上,原始网站的所有者通过与CDN提供商共享私钥而面临更多安全风险,因为CDN提供商可能将这些敏感信息分发到因特网上的所有节点。

当网站的所有者将其HTTPS的认证信息委托给某些CDN提供商时,应该有一种机制通知最终用户该授权。….最终用户要可以验证原始网站和CDN提供商的身份,以及它们之间的委托。