腾讯云 SSL 证书文件格式踩坑笔记
最近在给网站部署 SSL 证书,由于我的设备跨越了 Windows Server、Debian、QNAP 等多个平台,所以证书格式也要用到很多种,以下是我经过几天时间踩坑之后总结出来的干货。
先说证书,IIS 的就不说了,只说说 Nginx 和 Apache 证书格式的区别,以及威联通 QNAP 系统独特的证书格式。
腾讯云的 Nginx 证书包解压之后有四个文件,文件名分别为:
fairysoft.net_bundle.crt 网站证书跟中继证书合并的证书链 fairysoft.net_bundle.crt 这个文件跟上面那个文件内容完全一样,只是扩展名不同 fairysoft.net.csr 申请证书时生成的请求文件,部署时用不到,可删 fairysoft.net.key 私钥文件
腾讯云的 Apache 证书包解压之后也有四个文件,文件名分别是:
fairsoft.net.crt 网站证书 fairsoft.net.key 私钥 fairsoft.net.csr 申请证书时生成的请求文件,部署时用不到,可删 root_bundle.crt 中继证书
Nginx 的配置文件如下,需要指定两个文件,一个是网站证书跟中继证书合并成的证书链,另外一个是单独的私钥:
ssl_certificate /etc/ssl/fairysoft.net_bundle.pem; ssl_certificate_key /etc/ssl/fairysoft.net.key;
旧版 Apache(2.4.8 之前)配置文件中需要指定三个文件:
SSLCertificateFile /etc/ssl/fairsoft.net.crt SSLCertificateChainFile /etc/ssl/root_bundle.crt SSLCertificateKeyFile /etc/ssl/fairsoft.net.key
新版 Apache(2.4.8 及以后)配置文件中废弃了 SSLCertificateChainFile,强制要求把域名证书跟中继证书顺序拼接成一个证书链,私钥依旧单独文件,格式跟 Nginx 一致了。
SSLCertificateFile /etc/ssl/fairysoft.net_bundle.pem SSLCertificateKeyFile /etc/ssl/fairsoft.net.key
总结一下,腾讯云 Apache 证书包是拆分文件:域名证书.crt + 中继.crt + 私钥.key,旧版专用,新版不能直接用。新版 Apache 2.4.8+ 如果要用旧版的 Apache 证书包,必须手动将:域名证书.crt + 中继.crt → 合并成证书链文件,和 Nginx 格式一致,其实直接下载 Nginx 的证书包就可以直接用了,不需要手动合并。
威联通 QNAP 系统则有些特殊,QNAP 虽然使用的是 Apache 作为 Web 服务器,但是证书管理却使用了 stunnel,配置文件如下:
SSLCertificateFile "/etc/stunnel/stunnel.pem" # 这里面同时包含私钥和网站证书 SSLCertificateChainFile "/etc/stunnel/uca.pem" # 中继证书
从配置文件可以看出来,威联通使用的证书格式跟 Nginx 和 Apache 都不一样,私钥和网站证书合并成一个证书链,而中继证书却单独放。
最近我还在 Windows Server 服务器上部署了 Win‑acme ,下载的证书文件格式如下:
fairsoft.net‑key.pem 私钥文件 fairsoft.net‑crt.pem 网站证书 fairsoft.net‑chain‑only.pem 仅中继证书 fairsoft.net‑chain.pem 网站证书和中级证书合并的证书链
对比一下就会发现 Win‑acme 下载的证书跟 Nginx 格式的证书包完全互通,可直接通用于 Nginx 和新版 Apache。
下一期我来讲一下如何在各种 Linux 系统上部署脚本,自动更新快过期的证书。