使用 Certbot 申请 Let's Encrypt 免费证书,启用 https

0_1483698500629_letsencrypt-logo-horizontal.png
Let`s Encrypt 提供免费 公益 安全的 https 证书。Let's Encrypt 得到许多公司和机构支持,包括 Mozilla 和 Chrome. 你可以方便的申请安全证书,拥有与付费 https 证书相同功效和安全(?)。

Let`s Encrypt 使用一种新式方法验证域名所有权,名为 ACEM ,简单来说是在你希望启用 https 的域名指向的服务器网站根目录放置一个验证文件,然后通过域名读取服务器上的验证文件,如果读取成功,代表这个域名就是你的,会颁发加密证书给域名。

ヾ(´・ ・`。)ノ”

通过 ACME Client Implementations 可以发现 Let`s Encrypt 推荐使用 Certbot 申请获取证书。

https://certbot.eff.org/

ヾ(´・ ・`。)ノ” 这里使用 Nginx Web Server.

0_1483698347856_QQ截图20170106182404.png

选定后在页面下方会出现安装 Certbot 步骤和域名验证教学,按照这些步骤可以快速在服务器部署程序 Certbot 并且开始使用 https ,以下是启用 https 的流程。

安装 Certbot

Centos7
yum install certbot

Debian
apt-get install certbot -t jessie-backports
如提示 E: The value 'stretch-backports' is invalid for APT::Default-Release as such a release is not available in the sources. 按照 https://backports.debian.org/Instructions/ 添加 backports

启动域名验证,生成域名证书和私钥文件,这个命令会弹出界面,有两个方式,因为网站已经在启动,建议选择 "webroot" 根目录验证方式。

certbot certonly

0_1483699816019_QQ截图20170106104826.png

当然了,咱们也可以使用命令,免得这个界面用键盘选择操作真是难受呢。
--webroot -w 指向网站根目录,-d 后面为要被验证和颁发证书的域名,注意同意用户协议和电子邮箱地址。如果服务器还有其他网站,可以添加其他网站的根目录和域名。具体参数含义查看 文档

certbot certonly --webroot -w /home/nodebb/public -d set-fire.com -d www.set-fire.com  --agree-tos --email xxxx@www.set-fire.com

授权同服务器其他目录网站域名的例子。

certbot certonly --webroot -w /home/nodebb/public -d set-fire.com -d www.set-fire.com  --webroot -w /home/corps -d corps.set-fire.com --agree-tos --email xxxx@www.set-fire.com

成功后的返回结果 :

IMPORTANT NOTES:

  • Congratulations! Your certificate and chain have been saved at
    /etc/letsencrypt/live/set-fire.com/fullchain.pem. Your cert will
    expire on 2017-04-06. To obtain a new or tweaked version of this
    certificate in the future, simply run certbot again. To
    non-interactively renew all of your certificates, run "certbot
    renew"

  • If you like Certbot, please consider supporting our work by:

    Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
    Donating to EFF: https://eff.org/donate-le

信息提示域名证书已经放进了 /etc/letsencrypt/live/set-fire.com/ 目录,那么咱们就在添加进 nginx 配置文件来试试。

cert.pem 服务器证书文件
chain.pem 中间证书

fullchain.pem 是 cert.pem 和 chain.pem 结合文件,nginx 配置放在 ssl_certificate 参数后方。
privkey.pem 私钥文件,也就是常见的 ***.key ,nginx 配置在 ssl_certificate_key 参数后方。

具体看这个文档

以下只是配置文件的部分内容...

server {
    listen 443 ssl http2 fastopen=3;

    server_name www.set-fire.com;  
    
    ssl on;
    ssl_certificate /etc/letsencrypt/live/set-fire.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/set-fire.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    

如何给证书续命呢?

Let's Encrypt 证书的有效期是90天,也就是说必须在颁发日开始后90天到期之前续命。为证书续命可以阅读这些文档 Renewing certificates .

测试更新是否正常

certbot renew --dry-run 
certbot renew

我有习惯就是在证书到期之前手动命令续订证书,沒有使用 crontab . 当然如果你怕遗忘或没时间手动续签可以使用 crontab 来自动续期并且重新启动 nginx .

最后由 BlueBlue_Master 编辑

破网,连头像都加载不出来

  • 2
    帖子
  • 2939
    浏览