![让我们加密证书和 NGINX - 找不到证书或密钥指令](https://linux22.com/image/708061/%E8%AE%A9%E6%88%91%E4%BB%AC%E5%8A%A0%E5%AF%86%E8%AF%81%E4%B9%A6%E5%92%8C%20NGINX%20-%20%E6%89%BE%E4%B8%8D%E5%88%B0%E8%AF%81%E4%B9%A6%E6%88%96%E5%AF%86%E9%92%A5%E6%8C%87%E4%BB%A4.png)
我的服务器运行在 LEMP Stack Ubuntu 16.04 和最新版本的 nginx 上
我已经在我的服务器上为以下域和子域安装了 SSL 证书:example.com
,domain1.example.com
并且一切运行正常。
我努力实现的目标
我想创建一个新证书domain2.example.com
为此,我尝试了这个命令:
sudo certbot --nginx -d example.com -d domain1.example.com -d domain2.example.com --expand
错误信息
在 /etc/nginx/sites-enabled/example.com 中找不到 set(['www.example.com', '*.example.com', 'example.com']) 的证书或密钥指令。VirtualHost 未被修改。
nginx 配置
server {
# SSL configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
root /var/www/laravel/public;
index index.php index.html index.htm;
server_name example.com *.example.com www.example.com ;
}
问题
我做错了什么?如何重新创建证书以添加domain2
?
答案1
这就是我必须做的事情。
- 首先通过输入以下内容查找现有证书
certbot certificates
- 然后识别您想要的证书
expand
- 通过键入 来更新证书
sudo certbot certonly --cert-name example.com -d example.com -d domain1.example.com -d domain2.example.com --expand
。 - 选择
2: Place files in webroot directory (webroot)
- 输入新的
webroot
,对我来说/var/www/laravel
答案2
对我来说,我进入/etc/nginx/sites-enabled
文件夹并手动删除了之前以为已经删除的错误的符号链接虚拟主机文件。令人惊讶的是,它们仍然在那里。所以一定要sudo rm -rf [filename]
在那个文件夹中执行。然后通过重新启动 nginxsudo nginx -s reload
并再次运行 certbot 命令,应该是 GTG。
答案3
最好的方法之一是使用 webroot 插件(已描述https://certbot.eff.org/#centosrhel7-other)。我建议按照以下方法操作:
将以下位置指令添加到您想要通过 certbot 处理并获取证书的主机(服务器块):
location /.well-known { root /usr/share/nginx/html; }
安装 certbot
- 执行
certbot certonly
命令 - 按照说明操作。选择“webroot 方式”进行身份验证(第二个选项)。当您要求输入域名的 www-root 时,请输入
/usr/share/nginx/html
(如位置指令 root 中所示)。 - 一切完成后,您可以在 中找到您的证书
/etc/letsencrypt/live/youdomain.com/fullchain.pem
。 添加到服务器块:
ssl on; ssl_certificate /etc/letsencrypt/live/youdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/youdomain.com/privkey.pem;
就这样;)之后,您可以通过运行certbot renew
命令轻松地更新证书。
怎么运行的?
当我们添加位置指令时,我们选择自定义根文件夹作为/.well-known
位置。Certbot 在目录中创建文件.well-known
,外部身份验证服务器 (ACME CA) 检查此文件夹中的文件。如果您管理多个域或使用 nginx 作为代理 (!),则使用一个公共根作为/.well-known
位置非常有用,因为在这种情况下,您可能在安装 nginx 的机器上没有根目录(例如,您在一个 VPS 中安装了 nginx 作为在另一个 VPS 中安装的 Apache 的代理)。
祝你好运。