Nginx安装中间证书

Fla*_*are 15 ssl certificate nginx

我正在尝试在Nginx上安装中间证书(laravel forge).现在证书已正确安装,只是缺少的中间件.

我已经看到我需要将当前证书与中间证书连接起来.添加中间证书的最佳/最安全的方法是什么.

此外,如果中间件的安装失败,我可以回滚到以前的证书,并重新启动nginx?(该网站网站现场直播,因此停机时间不会太长)

saa*_*aaj 34

Nginx期望server您引用的文件中的所有部分证书ssl_certificate.只需将所有供应商的中间证书和域名证书放在一个文件中即可.它看起来像这样.

-----BEGIN CERTIFICATE-----
MII...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MII...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MII...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

为了确保一切正常,并避免停机时间,我会在本地建议你设置Nginx的,添加127.0.0.1 yourdomain.com/etc/hosts,并尝试从主流浏览器中打开它.当您确认一切正确后,您可以将其复制到生产服务器.

完成后,最好使用一些SSL检查工具进行验证(例如这一个).由于预安装的CA证书可能因浏览器和平台而异,因此您可以轻松忽略来自一个操作系统或一组有限浏览器的错误配置检查.

编辑

正如@Martin指出的那样,文件中的证书顺序很重要. 针对TLS 1.1的RFC 4346规定:

这是X.509v3证书的序列(链).发件人的证书必须在列表中排在第一位.以下每个证书必须直接证明其前面的证书.

因此顺序是:

  • 1.您的域名证书
  • 2.供应商的中间证书,证明(1)
  • 3.供应商的中间证书,证明(2)
  • ...
  • ñ.证明(n-1)的供应商的根证书.可选,因为它应包含在客户端的CA存储中.

  • 请注意,顺序很重要,看https://serverfault.com/questions/476576/how-to-combine-various-certificates-into-single-pem/476620#476620 (4认同)

Jes*_*ele 5

让我们加密:fullchain.pem

对我来说同样的麻烦。我正在使用 Letsencrypt,并且在我的 Nginx 配置中,我不需要使用这个:

ssl_certificate      /etc/letsencrypt/live/domain.tld/cert.pem;
ssl_certificate_key   /etc/letsencrypt/live/domain.tld/privkey.pem;
Run Code Online (Sandbox Code Playgroud)

但使用这个:

ssl_certificate      /etc/letsencrypt/live/domain.tld/fullchain.pem;
ssl_certificate_key   /etc/letsencrypt/live/domain.tld/privkey.pem;
Run Code Online (Sandbox Code Playgroud)