在网站上部署证书
证书申请
现在在七牛云与腾讯上可以申请免费一年的域名证书。于是把本博客网站迁移到https协议上来,因为使用的照片还是在http上,所以浏览器仍然提示不是完全安全,规划图床稍后迁移。
- 申请
申请腾讯云的ssl,申请时选择dns认证是最快的,只要解析设置正确,几分钟就会颁发证书。而设置文件认证会等待很长时间。
目前免费的证书都是单域名,即不能设置通用 *.example.com域名作为网址。
- 部署
在平台上申请好之后,就可以下载证书公私玥了。然后部署到网站或者CDN上。
腾讯云给的证书文件包含不同容器
Tomcat为xx.jks文件
Nginx为2xx.key与1_xx_bundle.crt文件
IIS为xx.pfx文件
Apache为1_root_bundle.crt与2_xx.crt与3_xx.key文件
本网站用的是tomcat,所以将xx.jks文件上传到容器服务器。
tomcat部署ssl
修改 tomcat 服务器的 server.xml 文件
<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提供商的身份,以及它们之间的委托。