问题描述
今天在使用百度cdn的时候上传ssl证书一直解析不了
以前在别的云服务商上传证书的时候都是这么上传的,它们都可以解析,只有百度云解析不了。
原因
详细看了看证书上传的规则
1.证书扩展名一般为“.pem”,“.crt”或“.cer”,可在文本编辑器中打开证书文件。
2.证书 PEM 格式:以“-----BEGIN CERTIFICATE-----”作为开头, “-----END CERTIFICATE-----” 作为结尾。
3.如果证书文件包含多份证书,需要人为的将服务器证书与中间证书拼接在一起上传。规则:服务器证书+中间证书。
好吧,它说要中间证书,原来以前都没上传中间证书。因为我的web容器是apache,所以以前就下载了apache版本的证书压缩包,它给的文件有三个
- www.youdomain.cn_public.crt //公匙
- www.youdomain.cn_chain.crt //中间证书
- www.youdomain.cn.key //私匙
以前在配置证书文件的时候只配了公匙和私匙,并没有配置中间证书,也没多大影响可以正常使用,百度云好像要求严格一点就必须配置中间证书。
解决问题
[scode type=“yellow”]提交ssl证书[/scode]
将中间证书复制追加在公匙的后面就可以解析了,提交证书至百度云成功。
[scode type=“yellow”]证书一致[/scode]
上面配置好了之后,接下来就是一个大坑了。由于在百度云配置的证书带了中间证书,在服务器配置的证书没有带中间证书,会出现两边的证书不一致。浏览器始终说中间的连接不是绝对的安全。这个时候CDN相当于中间人,没有证书文件不一致中间的连接就不安全。简单的画个图感受一下
中间的ssl证书和协议始终要保持一致。由于在服务器上面没有使用中间证书,CDN服务器和服务器之间的证书文件就不一样了。需要在服务器上面配置中间证书。
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/httpd/conf/cert/4134938_www.summerpond.cn_public.crt
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/httpd/conf/cert/4134938_www.summerpond.cn.key
# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
SSLCertificateChainFile /etc/httpd/conf/cert/4134938_www.summerpond.cn_chain.crt
重启apache服务
systemctl restart httpd
这个时候服务器和CDN服务器用的证书就保持一致了。
[scode type=“yellow”]协议一致[/scode]
CDN设置回源协议为https
设置好了之后别忘记刷新CDN缓存,刷新一下就会出现久违的小锁了。