为nginx配置Let’s Encrypt证书




Let’s Encrypt在某次更新后改为使用certbot签发证书。和以前不同的是,现在签发证书时不需要关闭Web服务,但是Let’s Encrypt需要先验证这个域名属于你本人。

其大致流程是Let’s Encrypt客户端在本地的http根目录下生成一个包含着相关信息的临时文件(token),然后Let’s Encrypt的验证服务器通过访问这个临时文件来确认改域名属于你本人并且相关的DNS记录正确。如果你使用Apache,这个过程将会自动完成,但目前为止,Let’s Encrypt并没有官方支持nginx,所以需要手动完成这一步骤。

安装配置Let’s Encrypt

sudo apt-get update
sudo apt-get install -y git
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
cd /opt/letsencrypt
sudo ./letsencrypt-auto

执行./letsencrypt-auto之后,letsencrypt客户端会自动安装并配置相关依赖。

配置webroot验证

Let’s Encrypt的验证文件位于web根目录下的/.well-known/acme-challenge/目录中。

通常服务器的配置是禁止用户访问以点开头的项目的(比如.git/ .htaccess),所以需要修改配置使其被允许访问。

location ~ /.well-known 
{
    allow all;
}

测试配置文件无误后重新启动nginx。

签发证书

假设web根目录为/var/www/

./letsencrypt-auto certonly -a webroot --webroot-path=/var/www/ -d example.com -d www.example.com

一切无误的话,生成的证书文件位于/etc/letsencrypt/live。4个文件分别为:

  • cert.pem: Your domain’s certificate
  • chain.pem: The Let’s Encrypt chain certificate
  • fullchain.pem: cert.pem and chain.pem combined
  • privkey.pem: Your certificate’s private key

(准确起见不翻译了)

配置nginx

ssl_certificate /path/to/certificate/fullchain.pem;
ssl_certificate_key /path/to/certificate/privkey.pem;
ssl_trusted_certificate /path/to/certificate/chain.pem;

续期

./letsencrypt-auto renew

完成后新的证书存放在/etc/letsencrypt/live/[你的网站url]/,将证书放在相应位置后重启nginx。

Done.




Posted

in

by

Comments

One response to “为nginx配置Let’s Encrypt证书”

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.