gpt4 book ai didi

ssl - nginx SSL 无起始行 : expecting: TRUSTED CERTIFICATE

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:43 27 4
gpt4 key购买 nike

我没有想法,我需要帮助!

我使用 Openssl 创建我的 SSL:

openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout key.pem -out cert.pem -days 3650

cert.pem 看起来像这样:

-----BEGIN CERTIFICATE-----
cert
-----END CERTIFICATE-----

key.pem 看起来像这样:

-----BEGIN PRIVATE KEY-----
key
-----END PRIVATE KEY-----

在 docker-compose 中,我将证书/ key 发送到 etc/nginx/ssl/...

volumes:
- ./sites:/etc/nginx/conf.d
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./ssl/cert.pem:/etc/nginx/ssl/cert.pem
- ./ssl/key.pem:/etc/nginx/ssl/key.pem

在 nginx 中我是这样添加的:

  listen    443 ssl;
server_name localhost;
ssl_certificate ssl/cert.pem;
ssl_certificate_key ssl/key.pem;

当我启动 docker-compose 时,我在 nginx 中遇到这个错误:

web_1    | 2018/08/17 16:38:47 [emerg] 1#1: PEM_read_bio_X509_AUX("/etc/nginx/ssl/cert.pem") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)
web_1 | nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/ssl/cert.pem") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

我已经为此工作好几天了,但我不确定为什么会不断收到此错误。我试过将它设为 crt/key 而不是 .pem,但我得到了同样的错误。如果我只是一起删除 ssl,服务器工作正常,但我非常需要 SSL。请帮忙!

最佳答案

“普通”证书一旦在 PEM 中编码,将如下所示:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

(...DER结构的Base64编码)

这通常是任何启用 TLS 的应用程序在想要向远程端显示其身份时所需要的(带有关联的 key ,通常在单独的文件中)。

作为旁注,由于它似乎是流行的(错误的)信念,文件名本身(包括扩展名)对内容的工作(或不工作)状态没有明确的影响。您可以将文件命名为 foobar.42buzz.666,如果它们的内容有效,它们也可以正常工作……当然,人工维护会更难,因此约定经常使用.crt作为证书(或.cert用于非基于DOS的受限环境)和.key 用于 key 文件,通常使用网站名称(对于网站)或其中的一部分作为名称,例如 example.com.crt。但同样,这些只是一组可能的约定,任何需要这些文件的程序都不关心名称,只关心内容。有些人也在使用 .pem 扩展名。

参见 https://en.wikipedia.org/wiki/X.509#Certificate_filename_extensions对于以上所有内容,它对选项进行了很好的讨论/介绍。

现在在您的情况下,错误消息告诉您它希望有这样的内容:

-----BEGIN TRUSTED CERTIFICATE-----
...
-----END TRUSTED CERTIFICATE-----

唯一的区别是添加了 TRUSTED 关键字。但是为什么会发生,什么时候发生?

证书由一个“证书颁发机构”通过一个或多个中间人签署。这构建了一条直至根证书的信任链,其中颁发者等于主体,该证书自行签名。

您自己生成了证书,因此这是一个“自签名”证书,在技术上与 CA 证书没有区别,除了默认情况下没有系统(包括您自己的系统)会在没有特定配置的情况下信任此类证书。

这基本上就是错误消息告诉您的内容:应用程序说它正在根据您的配置加载证书,但它无法验证(因为它是自签名的),同时您没有明确地将其配置为信任

这可能因应用程序或其版本而异,因为指南位于 https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-16-04与您做的事情基本相同,并且可以正常工作,但不显示证书的内容。

在您的 openssl 调用中,如果您添加 -trustout,它将生成 BEGIN TRUSTED CERTIFICATE 而不是 BEGIN CERTIFICATE。这也可能默认发生,具体取决于系统上 openssl 的安装/配置方式。相反,您有 -clrtrust。请参阅位于 https://www.openssl.org/docs/man1.1.0/apps/x509.htmlopenssl x509 命令的“信任设置”部分

关于ssl - nginx SSL 无起始行 : expecting: TRUSTED CERTIFICATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51899844/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com