使用Let’s Encrypt配置ubuntu nginx 免费ssl证书

前言

Let’s Encrypt是一家免费、开放、自动化的证书颁发机构(CA。Let’s Encrypt的关键原则为:

  • 免费:任何拥有域名的人都可以使用 Let’s Encrypt 免费获取受信的证书。
  • 自动化:运行于服务器上的软件可以与 Let’s Encrypt 直接交互,以便轻松获取证书,安全地配置它,并自动进行续期。
  • 安全: Let’s Encrypt 将成为一个推动 TLS 安全最佳实践发展的的平台,无论是作为一个证书颁发机构(CA)还是通过帮助网站运营商正确地保护其服务器。
  • 透明:所有颁发或吊销的证书将被公开记录,供任何人查阅。
  • 开放:自动颁发、续期证书的协议将作为其他人可以使用的开放标准发布。
  • 乐于合作:就像互联网底层协议本身一样,Let’s Encrypt 是为了让整个互联网社区受益而做出的共同努力,它不受任何单一组织的控制。

现在,我们介绍如何在ubuntu 18.04上配置nginx ssl证书。

准备

  • 已购买域名,并配置A记录。
  • 已配置好http 80和443端口。
  • 已安装并配置好nginx服务和域名,并访问正常。例如:http://example.com访问正常。
  • 安装依赖软件
$ sudo apt install software-properties-common
$ sudo add-apt-repository universe

安装certbot

$sudo apt install certbot python-certbot-nginx -y

配置证书

$ sudo certbot --nginx

# 安装过程中会询问选择域名
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: another.com

# 输入序号继续,然后询问是否转发所有非加密请求到https端口,选择`2`

1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/example.conf ?

安装完成,显示证书路径和有效期:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-xx-xx.

配置证书自动更新

  • 测试certbot更新命令,确保系统的配置均正常

    sudo certbot renew --dry-run
  • 配置cron脚本

    $ sudo -s
    $ crontab -e
    
    # 添加以下命令, 每30天更新一次证书
    0 0 */30 * * root certbot -q renew --nginx && service nginx restart
    
    # 验证任务分配计划时间
     systemctl list-timers
    

显示证书的有效时间

$ openssl x509 -noout -dates -in /etc/letsencrypt/live/example.com/cert.pem

views:2011