愚蠢的地球人 Hello Earth!

腾讯云 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 系统上部署脚本,自动更新快过期的证书。

 

留言列表
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。