在 ACM 中导入的自签名 SSL 证书不适用于 nginx

Self signed SSL certificate imported in ACM does not work with nginx

提问人:RDV 提问时间:8/10/2023 更新时间:8/10/2023 访问量:99

问:

我创建了一个这样的SSL证书:

openssl req -new -newkey rsa:2048 -nodes -keyout mycert.key -out mycert.csr

我填写了所有必需的信息,尤其是我得到了文件和Common Name (eg, fully qualified host name) []:test.mydomain.commycert.csrmycert.key

然后,为了生成 cetificate,我运行了以下命令:

openssl x509 -req -days 365 -in mycert.csr -signkey mycert.key -out mycert.crt

然后我使用 ACM 控制台 https://us-east-1.console.aws.amazon.com/acm/home,并使用 As Certificate BodyCertificate Private Key 导入了一个新的证书。mycert.crtmycert.key

然后,我使用 Amazon Linux 2023 创建了一个 EC2 实例,并分配了一个弹性 IP。在这种情况下,我安装了一个 NGINX 服务器作为我的 nodejs 应用程序的反向代理。我使用了这个配置文件:

server {
    listen 80;
    listen 443 ssl;
    server_name test.mydomain.com;

    ssl_certificate /path/to/certs/mycert.crt;
    ssl_certificate_key /path/to/certs/mycert.key;

    location / {
        # My nodejs application lists to 8081 port
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

使用 Route53,我创建了一个 A 记录,以将弹性 IP 映射到 .test.mydomain.com

问题是当我使用浏览器访问时,它说它不是一个安全的连接,就像它无法验证 ssl 证书一样。https://test.mydomain.com

有什么想法吗?

SSL OpenSSL 证书管理器

评论

0赞 dave_thompson_085 8/10/2023
不是编程或开发,但您的证书不是由受信任的 CA 签名的,并且很容易由任何人创建,例如运行虚假、恶意和有害服务器的犯罪分子或敌人。要使其受信任,您必须将其导入浏览器使用的“根 CA”存储中;这各不相同,您没有说是哪个浏览器。此外,十多年前,使用通用名称来标识 HTTPS (Web) 服务器已被 SubjectAlternativeName (SAN) 取代,如今大多数浏览器将不再使用 CN;关于在此堆栈和其他堆栈上的 OpenSSL 中设置 SAN 有很多问题。
0赞 RDV 8/10/2023
感谢您的评论。我认为将证书导入 ACM 的主要思想是它充当证书颁发机构并识别此不受信任的证书。我错了吗?
0赞 dave_thompson_085 8/11/2023
ACM 是一个从属 CA,可以在普遍信任的根 (Starfield) 下向您颁发证书,但任何人(包括 ACM)都不能更改其他人颁发的现有证书。导入现有证书和密钥的目的是允许设计为使用 ACM 的各种 Amazon 服务使用它,而不是 ACM 颁发的证书。
0赞 RDV 8/12/2023
感谢您的澄清。如果你想发布它,我认为这是问题的答案
0赞 dave_thompson_085 8/12/2023
这不是编程或开发问题,因此是题外话;这就是为什么我一开始没有发布答案的原因。

答: 暂无答案