我对此还很陌生,还没有在 nginx 中安装 SSL 证书,所以请原谅我的无知。
我有来自 godaddy 的证书,但我似乎找不到在我的 linux 服务器(ubuntu 18.04)上使用它的方法。
我将回顾一下迄今为止所做的事情。
Godaddy 证书
在创建 SSL 证书的过程中,godaddy 首先提供了两个文件,一个是您的 SSL 证书密钥,另一个是 CSR(不确定它是什么)。
然后系统会提示你下载 SSL 证书,这是另外两个文件,一个是某种捆绑包,另一个是其他东西(来自他们的网站)将您的 SSL 证书文件和证书包文件复制到您的 Nginx 服务器。这两个文件都是.crt
路由器
我已启用任何传入的 443 将流量重定向到我的服务器。
服务器 Ubuntu 18.04
我遵循了他们的不太有用的教程。
https://uk.godaddy.com/help/nginx-install-a-certificate-6722
https://www.godaddy.com/garage/how-to-install-an-ssl-certificate-on-ubuntu-for-nginx/
编辑 nginx 配置文件
/etc/nginx/sites-available/myweb
server {
listen 443;
listen [::]:443;
ssl on;
ssl_certificate_key /etc/nginx/ssl/myweb.key;
ssl_certificate /etc/nginx/ssl/certf.crt;
ssl_certificate /etc/nginx/ssl/b_certf.crt;
root /media/world/myweb/origin;
index index.html index.htm index.nginx-debian.html;
server_name 192.168.0.9 lmyweb.com www.myweb.com;
location / {
try_files $uri $uri/ =404;
}
}
当我访问我的网站时,出现 404该网站无法访问。
我是不是漏掉了什么?也许是 Nginx 中一些我不知道的启用功能?或者我在错误的文件中配置了上述内容?
任何帮助将不胜感激。
答案1
因此,您陷入了相当多的陷阱,并且遇到了 SSL 证书问题。
让我们一点一点地来看一下。
NGINX 的 SSL 证书
与 Apache 不同,您只能ssl_certificate
在服务器块中提供一行;多余的行将导致问题或忽略证书。
NGINX 证书需要按以下顺序包含以下内容:
- 您的网站/
serer_name
的特定证书 - CA 证书链。这是由 GoDaddy 在其 ZIP 文件中随您的证书一起提供的。
您通常可以通过类似的方式来执行此操作cat sitecert.crt ca-cert.crt > sitecert.fullchain.pem
,然后在您的 NGINX 配置中使用该sitecert.fullchain.pem
文件。
SSL 配置
NGINX 的 SSL 配置需要如下(请注意,其他配置位已被删除或替换为,# ...
以表明您需要在此时配置位,无论其余配置是什么):
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/sitecert.fullchain.pem;
ssl_certificate_key /path/to/sitecert-private.key;
# ... Site specific configs here
}
这解决了几个问题:
这使用恰当的
listen 443 ssl;
线。你应该不是ssl on;
因为它被认为是旧的并且已被弃用。这使用了完整的证书链和密钥,并按照合理的顺序排列它们。