关于SSL证书安装配置工具的选择, 其核心要点就在于服务器所使用的操作系统, 还有站点的具体规模以及运维人员的习惯。如果说是在Linux环境里, 那么就会推荐大家使用certbot或者是宝塔面板这一类的东西。如果是Windows环境的话, 首选的方案就是IIS证书管理器。
如果遇到了Kubernetes集群这样的场景, 就应该去使用cert-manager这个玩意儿。只要你能选对了相关的工具, 并且能够掌握住正确的配置步骤, 那么证书的部署工作是可以在10分钟之内就完成掉的, 完全没有必要去逐行地手写配置内容。
目前大家普遍使用的用于进行SSL证书安装和配置的工具, 按照分类来说, 是存在有三大类型的。
自动化命令行工具
certbot是由Let's Encrypt官方推出的工具, 它支持Apache、Nginx以及HAProxy这类软件。
当用户执行 certbot --nginx 这个命令的时候, 它就可以实现一键签发票据, 同时还能完成安装任务, 也会配置好自动续期这一步骤。在这个过程中, 用户是完全不需要去手动编辑任何证书文件的。
它用的是 acme.sh, 这个东西能够兼容 Let's Encrypt、ZeroSSL 等两百多家 ACME 签发服务, 它还能跨平台使用, 比如说在 Linux 系统上, 在 Windows 系统上, 在 macOS 系统上也都能用, 它挺适合用来批量管理多个域名的证书的。
在现在这个时候, 很多搞DevOps的团队都在用一些东西, 比如说那些CI/CD流水线, 再还有那种有很多站点的服务器的地方, 这些场合都可以用它。
图形化面板工具
宝塔面板: 它在内部设置好了“证书”模块, 你可以用它来可视化地上传证书, 也可以一键申请Let's Encrypt免费证书。它能自动把配置写入到Nginx/Apache里, 并且在证书到期前30天发送电子邮件提醒你, 还能自动进行续期。
1Panel(它是开源的), 它是一种轻量级的替代方案, 它的证书管理逻辑和宝塔面板是类似的, 它适合那些追求开源透明效果的用户。
适合用在那些规模不算太大的站点上面, 并且由那些不是特别专业的运维人员来进行操作。
容器与云平台原生工具
cert-manager 是处于 Kubernetes 生态之下, 用于对证书的整个生命周期进行管理的一个工具, 它可以通过 CRD 自动去申请证书, 同时也能自动进行轮换操作, 并且还会把证书注入到 Secret 之中, 整个过程完全不需要人工来进行干预。
你可以在阿里云/腾讯云SSL证书控制台里面操作, 在证书签发之后, 直接就去把它们绑定到CDN、负载均衡或者API网关上去, 这样就省去了需要手动下载并且再部署的那个过程。
它适合的场景, 就是云原生架构, 也包括企业级的高可用部署。
不管你是使用哪一款工具, 这五个关于配置SSL证书的事项, 一定要做到, 这是必须落落实实的关键点。
1. 证书与私钥匹配:部署前用 openssl x509 -noout -modulus -in cert.pem | openssl md5 与 openssl rsa -noout -modulus -in key.pem | openssl md5 比对,输出必须一致。
2. 完整证书链: 在Nginx的配置里, ssl_certificate 这个指令必须指向一个文件, 这个文件是把服务器证书和中间证书拼接在一起后形成的完整链接文件, 如果你没这么做的话, 那么浏览器就会弹出错误, 提示是“证书链不完整”。
3. 对于强制HTTPS跳转, 这个操作是增加return 301 https://$host$request_uri;, 这是在Nginx的情况下要用的, 或者是用对应的重写规则, 这样做的目的是确保所有的HTTP请求全部都进行重定向。
4. 自动续期: Let's Encrypt证书的有效期仅仅是90天, 因此必须要开启certbot定时任务, 或者要打开面板续区开关, 这样才能避免因为证书过期了, 结果导致网站打不了开, 无法访问。
5. TLS协议限制, 我们要禁用 TLS 1.0 和 TLS 1.1, 仅仅保留 TLS 1.2 和 TLS 1.3。在 Nginx 中进行设置的时候, 需要配置 ssl_protocols TLSv1.2 TLSv1.3;。
在完成所有的配置步骤之后, 大家最好是去ssllabs.com这个网站看一看。在这个网站上能够对SSL的配置情况进行一个评分。我们的目标是要把分数拿到A级或者A级以上的水平, 这样才算达到了要求。
常见问题
证书安装后浏览器仍提示不安全?
90%以上的情况, 之所以会出问题, 主要是因为那些证书链没有给它部署成一个完整的样子, 或者那个叫作中间证书的凭证, 在文件里给弄丢了。
针对这种情况, 你需要把包含有Intermediate这个字样的那个证书文件再重新下载一遍, 然后一定要仔仔细细地去确认一下你的配置文件里面写的路径, 是不是真正地指向了这个新下载下来的、正确的证书位置。
泛域名或SAN多域名证书怎么配置?
配置的这种做法和那个单独的一个域名的办法是一模一样的, 就是在你说的那个工具里面, 把那个通配符写成像带个点星号然后加点example.com这样的形式, 或者是填上一堆不同的域名组成的列表也是可以的, 至于说那个叫作SAN字段的东西会自动去处理的, 不用人工去操心这些个事情。
免费证书和付费证书部署步骤有区别吗?
安装配置的步骤是一模一样的。它们之间真正的区别只在于两个地方。第一个因素是有效期, 免费版本是九十天, 付费版本是一年到三年。第二个因素是验证等级, 也就是DV、OV或者EV。至于配置代码, 这两者之间是不存在任何差异的。
如果大家想要得到更多关于分场景 SSL 证书部署操作手册, 还有一些工具下载资源的信息了, 那就可以去访问一下 gz88.cn 这个网站来获取, 它这里覆盖的是 Nginx、Apache、IIS、Tomcat, 还有 Kubernetes 等主流环境。
至于每一篇的操作手册了, 都会附上完整的配置文件示例, 以及一些验证书法供查看, 这一点是确定的。


