我试图跟随godaddy的说明关于如何在 centos 上为 nginx 服务器添加 ssl 认证。在最后一步 (10),我收到“密钥不匹配”错误。
经过一番研究,我发现通过使用我的密钥对 .crt 进行签名,该错误就消失了。
即我跑了:
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
用我的域名替换每个服务器实例。
这消除了错误并允许我继续进行。
然而,当我尝试访问我的网站时,出现不安全的连接错误。
我做错了什么以及如何正确启用 SSL 认证?
答案1
取决于你想做什么。
您是否尝试制作自签名证书?
或者
您要从 godaddy 购买 SSL 证书吗?
如果你要从 godaddy 获取证书:
- 生成 CSR 文件以及私有 SSL 密钥:openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr
- 按照以下说明进行操作:https://ca.godaddy.com/help/nginx-on-centos-7-install-a-certificate-27192
对于自签名证书:
生成 CA ROOT 密钥 SSL
openssl genrsa -out rootca.key 2048
生成 CA ROOT PUBLIC SSL
openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem
生成域名私有 SSL:
openssl genrsa -out mydomain.key 2048
生成域 CSR SSL
openssl req -new -key mydomain.key -out mydomain.csr
使用 ROOT CA SSL 为域生成公共 SSL 密钥(这通常由 SSL 提供商执行)
openssl x509 -req -in mydomain.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out mydomain.pem -days 1024 -sha256
在哪里,
我的域名密钥- 你的私有 SSL,你将在 nginx 配置中使用:ssl_certificate_key
我的域名.pem- 你将在你的 nginx 配置中使用的公共 SSL:ssl_certificate
rootca文件- CA SSL,您需要在浏览器中安装(例如 Firefox)
答案2
在某些情况下,自签名证书可能没问题,但要明白这样做会在任何浏览器中引发某种警告(并且应该如此)。
使用自签名证书时,浏览器会被要求与服务器建立安全连接,而服务器会提供“虚构”证书,浏览器无法验证该证书,因为浏览器不知道签署证书的实体(浏览器有一个内部“目录”,其中包含它将接受为有效证书颁发机构的合法实体)。有时,您可以将虚构的签名实体导入浏览器以消除警告,但使用Letsencrypt最好放弃黑客行为,只需获取由 Microsoft、Google 和 Mozilla 认可的 CA 颁发的证书。
如果你已经拥有由合法 CA 颁发/签名的合法 CSR 和证书,那么可以查看Nginx 指南用于安装 Letsencrypt 证书。