# Nginx 部署的虚拟主机如何使用 Let's Encrypt 来进行加密 https

**URL:** <https://www.isharkfly.com/t/nginx-lets-encrypt-https/14034>\
**Category:** DevOps\
**Tags:** nginx\
**Created:** [July 8, 2022, 9:56pm UTC](https://www.isharkfly.com/t/nginx-lets-encrypt-https/14034 "2022-07-08T21:56:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [July 8, 2022, 9:56pm UTC](https://www.isharkfly.com/t/nginx-lets-encrypt-https/14034/1 "2022-07-08T21:56:54Z")

</div>

HTTPS 是现在网站的标配了，很多服务都是必须使用 https，如果你不使用的话，浏览器可能就不会对你非常友好了。

如果你不想使用商业的 CA 秘钥的话，你可以使用 Let’s Encrypt 来进行加密。

使用 Let’s Encrypt 唯一不好的地方就是每 3 个月要更新一次，当然你也可以使用自动的更新来处理就好了。

我们需要通过安装插件来实现：

- 获得 SSL 加密需要的 pem 秘钥。
- 设置 certbot 能自动更新秘钥。

## 需要前提条件

已经安装好了 Nginx并且配置好了虚拟主机  
安装好 `python3-certbot-nginx` 插件

对 Nginx 虚拟主机的配置方法我们就不详细说了，你可以自己搜索下进行配置。

## 安装 python3-certbot-nginx 插件

安装的命令非常简单：

执行下面的命令就可以了：`sudo dnf install python3-certbot-nginx` 需要注意的是，我们这个命令是带有 nginx 插件的。

还有一个官方的是不带有插件的，不建议装那个，因为非常不好配。

## 获得 pem 秘钥

运行下面的命令 `sudo certbot certonly --nginx`，需要后面添加 nginx 参数才可以了。

通过下面的输出我们可以看到，这个工具将会检测到你的本地服务器上有几个虚拟主机。

然后你需要选择你需要的一个来进行安装。

在安装成功后，会生成我们需要的 pem 秘钥。

 ![1](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/4/a/4a820e0ffe8274ca42f9b626cc7a39415b14fe54.png)

## 配置你的虚拟主机

找打你的虚拟主机文件，然后将生成的秘钥配置上去就可以了。

例如我们的虚拟主机配置：

 ![2](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/9/b/9b280271db59cbfbba072a01ea9c6a4728ed870d.png)

我们首先在上面配置了 80 端口的重定向，然后将生成的 2 个秘钥文件的指定位置配置上去就行了。

然后重启 Nginx 服务器，然后检查你的网站的 HTTPS 情况。

## 检查网站 HTTPS 情况

可以使用一些第三方的网站来进行检查，也可以直接使用浏览器来检查。

 ![3](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/c/4/c4bc7f4975778c4b2197b609deb48f5b8af2fd0d.png)

主要看看网站有没有正常的重定向，和 SSL 证书的过期时间。

上面的证书看起来签发的是泛域名。
