使用acme.sh自动化从Let's Encrypt生成并安装SSL证书到Nginx

作者:狼烟四起2024.04.15 11:14浏览量:12

简介:acme.sh是一个用于自动获取、续订和安装Let's Encrypt SSL证书的Shell脚本。本文将指导您如何使用acme.sh简化SSL证书的申请和安装过程,使其与Nginx服务器集成。

随着网络安全性的日益重要,SSL证书已成为网站安全性的标配。Let’s Encrypt作为一个免费、自动化和开放的证书颁发机构,为网站提供了便捷的SSL证书获取方式。acme.sh是一个用于自动获取、续订和安装Let’s Encrypt SSL证书的Shell脚本,它极大地简化了SSL证书的申请和安装过程。

本文将指导您如何使用acme.sh自动从Let’s Encrypt生成并安装SSL证书到Nginx服务器。

一、安装acme.sh

首先,您需要在服务器上安装acme.sh。通过运行以下命令,您可以使用curl命令直接下载并安装acme.sh:

  1. curl https://get.acme.sh | sh

安装完成后,您可以通过以下命令验证acme.sh是否成功安装:

  1. acme.sh --version

二、配置acme.sh

在使用acme.sh之前,您需要对其进行一些基本配置。运行以下命令以配置acme.sh:

  1. acme.sh --install-cert -d yourdomain.com --webroot /var/www/yourdomain.com

在上面的命令中,将yourdomain.com替换为您的域名,将/var/www/yourdomain.com替换为您的Web根目录。这将使acme.sh在指定的Web根目录中放置验证文件,以便Let’s Encrypt验证您的域名所有权。

三、生成SSL证书

完成配置后,您可以使用以下命令生成SSL证书:

  1. acme.sh --issue -d yourdomain.com --webroot /var/www/yourdomain.com

同样,将yourdomain.com替换为您的域名,将/var/www/yourdomain.com替换为您的Web根目录。acme.sh将自动从Let’s Encrypt获取SSL证书,并将其存储在服务器的默认证书存储位置。

四、安装SSL证书到Nginx

生成SSL证书后,您需要将证书文件安装到Nginx服务器上。首先,找到Nginx的SSL证书配置文件,通常位于/etc/nginx/sites-available/yourdomain.com/etc/nginx/conf.d/yourdomain.com。在该文件中,您需要配置SSL证书的路径和其他相关设置。

以下是一个示例的Nginx SSL证书配置:

  1. server {
  2. listen 443 ssl;
  3. server_name yourdomain.com;
  4. ssl_certificate /path/to/cert.pem;
  5. ssl_certificate_key /path/to/cert.key;
  6. ssl_protocols TLSv1.2 TLSv1.3;
  7. ssl_ciphers HIGH:!aNULL:!MD5;
  8. # 其他Nginx配置...
  9. }

在上面的配置中,将/path/to/cert.pem替换为您的SSL证书文件路径,将/path/to/cert.key替换为您的私钥文件路径。这些文件通常位于acme.sh的默认证书存储位置。

配置完成后,保存并关闭文件。然后,重新加载Nginx配置以使更改生效:

  1. sudo service nginx reload

现在,您的Nginx服务器已经成功配置了Let’s Encrypt SSL证书,并通过acme.sh自动进行了安装和配置。您的网站现在应该能够通过HTTPS进行安全访问了。

五、自动续订证书

acme.sh还提供了自动续订证书的功能。您可以设置一个cron任务来定期运行acme.sh的续订命令,以确保您的SSL证书始终有效。

首先,运行以下命令生成续订脚本:

  1. acme.sh --cron --home /root/.acme.sh

然后,编辑您的cron任务配置文件(通常是/etc/crontab/etc/cron.d/acme.sh),并添加以下行以每天凌晨自动续订证书:

  1. 0 0 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh > /dev/null

保存并关闭文件后,您的cron任务将自动每天凌晨运行acme.sh的续订命令,确保您的SSL证书始终保持最新状态。

通过使用acme.