CentOS 7系统Nginx申请免费SSL安全证书Let’s Encrypt教程

Let’s Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS,目前Facebook等大公司开始加入赞助行列。

Let’s Encrypt虽然还在测试当中,但是市场需求非常大,已经有非常多的朋友迫不及待地安装并用上了Let’s Encrypt。Let’s Encrypt向广大的网站提供免费SSL证书,不管是对于网站站长、互联网用户,还是对整个Web互联网,都是非常有利的,它有利于整个互联网的安全。

本篇文章就来为大家讲解一下如何获取Let’s Encrypt免费SSL证书,并附上Nginx的SSL证书配置方法。

未分类

使用 HTTPS 前的一些疑惑

现在是 2017 年,使用 HTTPS 已经不像几年前是一件昂贵的事情。当然我也是自己了解了一圈才消除了自己的疑惑,主要是:

  • 我的网站(一个简单的博客)可能没必要使用 HTTPS
  • HTTPS 会不会让网站速度变慢?
  • HTTPS 需要花钱吧?证书好像不便宜
  • 配置和维护 HTTPS 代价很高

要回答这些问题,推荐大家去看一下 Google I/O 2016 的视频(Youtube):https://www.youtube.com/watch?v=YMfW1bfyGSY

视频里把所有问题都详细一一解答,强烈推家把视频看完。

我简单总结:

  • 每个网站都应该用 HTTPS,就算是全静态站点也同样如此,运营商劫持严重干扰访问者的体验
  • 有几项技术可以提高 HTTPS 的性能,包括 Strict Transport Security,TLS False Start 和 HTTP/2 ,这些技术让 HTTPS 速度不慢,某些情况下会甚至更快
  • HTTPS 针对个人单个(或者几个)域名的使用来说,已经是免费的
  • 配置和维护 HTTPS 异常简单,Let’s Encrypt 这个项目通过自动化把事情简单化了

有哪些靠谱的免费 HTTPS 证书提供商?

选择证书提供商有3个主要考量:

  • 浏览器和操作系统支持程度
  • 证书类型
  • 维护成本

1、浏览器和操作系统支持程度

基本你能查到的热门证书提供商,支持程度都不会太差。例如 Let’s Encrypt 的支持可以访问:Which browsers and operating systems support Let’s Encrypt

可以看到,Android 2.3.6 以上,Firefox 2.0 以上,Windows Vista 以上,iOS 3.1 以上,Google Chrome全平台都是支持的。这一点就不用太担心了,看你你的网站受众情况来决定。对于我来说,我完全不在乎 Windows XP 的 IE 用户。

2、证书类型

HTTPS 证书分为3类, 1. DV 域名验证证书 2. OV 组织机构验证证书 3. EV 增强的组织机构验证证书。每类证书在审核和验证方面要求严格程度不同,浏览器会在地址栏给予不同证书不一样的展现。

一般个人使用DV证书完全够了,浏览器表现为地址栏前会有绿色的小锁。下面聊到的免费证书都是 DV 域名验证证书。

3、维护成本

我调研不多,使用过 StartSSL,现在用 Let’s Encrypt。StartSSL 的免费证书有效期是1年,1年后需要手动更换。配置过程还挺麻烦的。

更推荐 Let’s Encrypt,虽然有效期只有3个月,但可以用 certbot 自动续期,完全不受影响。而且 Let’s Encrypt 因为有了 certbot 这样的自动化工具,配置管理起来非常容易。

4、如何安装

第一种办法:通过官网申请安装:

  • Let’s Encrypt官网:

官方网站:https://letsencrypt.org/
项目主页:https://github.com/letsencrypt/letsencrypt

  • 生成 Let’s Encrypt 证书

未分类

Let’s Encrypt 证书生成不需要手动进行,官方推荐 certbot 这套自动化工具来实现。3步轻松搞定:

  • 下载安装 certbot (Let’s Encrypt项目的自动化工具)
  • 创建配置文件
  • 执行证书自动化生成命令

你可以在 certbot 网站上,选择你的 Web Server 和 操作系统,就能看到对应的安装和配置教程。

(本文主要介绍下面的安装办法)

第二种办法:手动申请安装(由于 CentOS的复杂性,我使用的这种办法)

一、 安装Let’s Encrypt免费SSL准备

安装Let’s Encrypt脚本依赖环境:(这一部分可以跳过,因为官方提供的Let’s Encrypt脚本会自动检测并安装)

# Debian

apt-get install git

# CentOS 7

yum install epel-release

cd /root/

wget https://dl.eff.org/certbot-auto --no-check-certificate

chmod +x

./certbot-auto

./certbot-auto -n

./certbot-auto -n只是用来安装依赖包的,也可以跳过直接到下面的生成证书的步骤,国内VPS或服务器上使用的话建议先修改为国内的pip源。

二、Let’s Encrypt免费证书生成

单域名生成证书:

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.smusic.cc -d www.smusic.cc

多域名单目录生成单证书:(即一个网站多个域名使用同一个证书)

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.smusic.cc -d www.vpser.net -d bbs.smusic.cc

多域名多目录生成一个证书:(即一次生成多个域名的一个证书)

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.smusic.cc -d www.smusic.cc -d bbs.smusic.cc -w /home/wwwroot/smusic.cc -d www.smusic.cc -d smusic.cc

提示:

IMPORTANT NOTES:

– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.vpser.net/fullchain.pem. Your cert will
expire on 2016-10-01. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
“certbot-auto 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/www.smusic.cc/ 目录下

三、证书续期

cerrbot的续期比原来的更加简单,因为证书只有90天,所以建议使用crontab进行自动续期:

crontab 里加上如下规则:0 3 */5 * * /root/certbot-auto renew –renew-hook “/etc/init.d/nginx reload” 这样每5天就会执行一次所有域名的续期操作。当然时间也可以自行进行调整,建议别太频繁,因为他们都有请求次数的限制,如果需要强制更新可以在前面命令上加上 –force-renew 参数。

具体方法参考:www.smusic.cc/2094.html

四、SSL证书注意事项:

1、因为默认LNMP的虚拟主机里是禁止 . 开头的隐藏文件及目录的,所以访问http://abc.com/.well-known/acme-challenge/**** 这个链接的话返回403错误,所以必须要将对应虚拟主机配置文件里的

location ~ /.
{
deny all;
}
这段配置删掉或注释掉或在这段配置前面加上
location ~ /.well-known {
allow all;
}

以上配置代码,然后重启nginx。

2、如果要启用http2的话,建议编辑lnmp.conf,将里面的Nginx_Modules_Options的单引号里加上 –with-openssl=/root/openssl-1.0.2h

并执行:

cd /root && wget -c https://www.openssl.org/source/openssl-1.0.2h.tar.gz && tar zxf openssl-1.0.2h.tar.gz 

然后使用升级脚本 ./upgrade.sh nginx 升级nginx至1.9.5或更高版本。

3、国内有些用户反映会卡在Installing Python packages…这个地方不动,因为pip的默认源是国外的,国内可能会有点慢,可以执行下面命令来修改pip源为国内的:

mkdir ~/.pip
cat > ~/.pip/pip.conf <<EOF
[global]
index-url = https://pypi.doubanio.com/simple/

[install]
trusted-host=pypi.doubanio.com
EOF

执行完,再重新运行certbot的命令应该正常安装python的包了。

五、Nginx虚拟主机的设置

配置文件地址: /usr/local/nginx/conf/vhost/www.smusic.cc.conf (根据自己的环境确认)

接下来进行配置Nginx虚拟主机文件,完整配置如下:

server
{
listen 443 ssl;   #lnmp1.3+版本默认支持http2,可以加上http2,lnmp1.2版本默认支持spdy,可以加上spdy
server_name www.smusic.cc;     ##这里是你的域名
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.smusic.cc;            #网站目录
ssl_certificate /etc/letsencrypt/live/www.smusic.cc/fullchain.pem;    #前面生成的证书,改一下里面的域名就行
ssl_certificate_key /etc/letsencrypt/live/www.smusic.cc/privkey.pem;   #前面生成的密钥,改一下里面的域名就行
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

include wordpress.conf;  #这个是伪静态根据自己的需求改成其他或删除
#error_page 404 /404.html;
location ~ [^/].php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;     #lnmp 1.0及之前版本替换为include fcgi.conf;
#include pathinfo.conf;
}

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*.(js|css)?$
{
expires 12h;
}

access_log off;
}

需将上述配置根据自己的实际情况修改后,添加到虚拟主机配置文件最后面。

添加完需要执行:/etc/init.d/nginx reload 重新载入配置使其生效。
重启Nginx:/etc/init.d/nginx restart

如果需要HSTS,可以加上add_header Strict-Transport-Security “max-age=63072000; includeSubdomains; preload”; 前面参数里的数值是秒。 开启后有效期内必须只能https访问,不确定的话不要开启。

LNMPA模式下只需要在Nginx上设置,只需要将php解析部分替换为 include proxy-pass-php.conf; 即可。

六、下面说一下可能会遇到的问题:

1、国内DNS服务商可能会不行,目前已知dnspod、cloudxns不行dnspod、cloudxns目前已经可以

Namecheap、Route 53的都可以。

2、Linode福利或IPv6用户福利

可能目前Linode用户应该遇到了

An unexpected error occurred:
There were too many requests of a given type :: Error creating new registration :: Too many registrations from this IP
Please see the logfiles in /var/log/letsencrypt for more details.

这个不一定是因为IP注册的次数过多,可能是因为IPv6的事,具体解决方法如下:

执行:sysctl -w net.ipv6.conf.all.disable_ipv6=1 来临时禁用IPv6
再生成证书后执行:sysctl -w net.ipv6.conf.all.disable_ipv6=0 再来解除禁用IPv6

3、如果启用了防火墙需要将443端口加入允许规则,一般iptables可以参考:https://www.vpser.net/security/linux-iptables.html

4、如果LNMP下访问http://abc.com/.well-known/acme-challenge/**** 这个链接403的话是因为默认LNMP 1.3的虚拟主机里是禁止.开头的隐藏文件及目录的。

需要将

location ~ /.
{
deny all;
}
这段配置删掉或注释掉或在这段配置前面加上

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

以上配置代码,然后重启nginx。

5、同时这里提醒一下如果设置了http 301跳到https的用户,再续期前还需要在nginx设置如下:

让启用 Nginx 启用 SSL,两种方法,单一支持HTTPS,或者同时支持 HTTP 和 HTTPS 两种协议。

备注 Nginx 默认没有安装 SSL 模块,安装时需要手动添加 –with-http_ssl_module 参数。(如果您使用LNMP安装包,可以忽视,默认已安装了)
80端口的虚拟主机上需要添加上,不加的话会无法验证的

location /.well-known/ {
add_header Content-Type 'text/plain;';
root /网站目录完整路径;
}

附完整的nginx下301 http跳到https的配置:

server
{
listen 80;
server_name www.vpser.net;
location /.well-known/ {
add_header Content-Type 'text/plain;';
root /网站目录完整路径;
}
location / {
return 301 https://www.vpser.net$request_uri;
}
}

用专业在线工具测试你的服务器 SSL 安全性

Qualys SSL Labs 提供了全面的 SSL 安全性测试,填写你的网站域名,给自己的 HTTPS 配置打个分。

如果你完全按照我上面教程配置,遵循了最佳实践,你应该和我一样得分是 A+

未分类

这意味着你启用了HTTPS,现在足够的安全,并且使用了最新技术,保证了性能。

CentOS Nginx安装配置Let’s Encrypt CA证书

  • 创建存放整数的目录
mkdir /data/www/ssl
  • 创建 CSR 文件

接着就可以生成 CSR(Certificate Signing Request,证书签名请求)文件了。在这之前,还需要创建域名私钥(一定不要使用上面的账户私钥),根据证书不同类型,域名私钥也可以选择 RSA 和 ECC 两种不同类型。以下两种方式请根据实际情况二选一。

  1. 创建 RSA 私钥(兼容性好):
openssl genrsa 4096 > domain.key
  1. 创建 ECC 私钥(部分老旧操作系统、浏览器不支持。优点是证书体积小):
#secp256r1
openssl ecparam -genkey -name secp256r1 | openssl ec -out domain.key
#secp384r1
openssl ecparam -genkey -name secp384r1 | openssl ec -out domain.key

有了私钥文件,就可以生成 CSR 文件了。在 CSR 中推荐至少把域名带 www 和不带 www 的两种情况都加进去,其它子域可以根据需要添加(目前一张证书最多可以包含 100 个域名):

openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]nsubjectAltName=DNS:yoursite.com,DNS:www.yoursite.com")) > domain.csr
执行这一步时,如果提示找不到 /etc/ssl/openssl.cnf 文件,请看看 /usr/local/openssl/ssl/openssl.cnf 是否存在。如果还是不行,也可以使用交互方式创建 CSR(需要注意 Common Name 必须为你的域名):
openssl req -new -sha256 -key domain.key -out domain.csr
  • 添加nginx配置,支持验证服务

我们知道,CA 在签发 DV(Domain Validation)证书时,需要验证域名所有权。传统 CA 的验证方式一般是往 [email protected] 发验证邮件,而 Let’s Encrypt 是在你的服务器上生成一个随机验证文件,再通过创建 CSR 时指定的域名访问,如果可以访问则表明你对这个域名有控制权。首先创建用于存放验证文件的目录,例如:

mkdir /data/www/challenges/

然后配置一个 HTTP 服务监听80端口,以 Nginx 为例:

server {
    listen 80;
    # listen [::]:80 default_server;

    server_name www.yoursite.com yoursite.com;
    location ^~ /.well-known/acme-challenge/ {
        alias /home/xxx/www/challenges/;
        try_files $uri =404;
    }

    location / {
        return 301 https://$server_name$request_uri;
    }
}

以上配置优先查找 ~/www/challenges/ 目录下的文件,如果找不到就重定向到 HTTPS 地址。这个验证服务以后更新证书还要用到,建议一直保留。

  • 获取网站证书

先把 acme-tiny 脚本保存到之前的 ssl 目录:

wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py

指定账户私钥、CSR 以及验证目录,执行脚本:

python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir ~/www/challenges/ &gt; ./signed.crt

如果一切正常,当前目录下就会生成一个 signed.crt,这就是申请好的证书文件。
如果你把域名 DNS 解析放在国内,这一步很可能会遇到类似这样的错误:

ValueError: Wrote file to /home/xxx/www/challenges/oJbvpIhkwkBGBAQUklWJXyC8VbWAdQqlgpwUJkgC1Vg, but couldn't download http://www.yoursite.com/.well-known/acme-challenge/oJbvpIhkwkBGBAQUklWJXyC8VbWAdQqlgpwUJkgC1Vg

尝试更改到国外的dns

搞定网站证书后,还要下载 Let’s Encrypt 的中间证书。配置 HTTPS 证书时既不要漏掉中间证书,也不要包含根证书。在 Nginx 配置中,需要把中间证书和网站证书合在一起:

wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem &gt; intermediate.pem
cat signed.crt intermediate.pem &gt; chained.pem

为了后续能顺利启用 OCSP Stapling,我们再把根证书和中间证书合在一起:

wget -O - https://letsencrypt.org/certs/isrgrootx1.pem &gt; root.pem
cat intermediate.pem root.pem &gt; full_chained.pem
  • 配置nginx监听443端口
server {
    listen 443;
    client_max_body_size 4G; 
    server_name chinachenshun.com www.chinachenshun.com sdchenshun.com www.sdchenshun.com; 

    ssl on; 
    ssl_session_timeout 5m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA; 
    ssl_session_cache shared:SSL:50m; 
    ssl_prefer_server_ciphers on; 
    ssl_certificate /data/www/ssl/chained.pem; 
    ssl_certificate_key /data/www/ssl/domain.key;
    ........
  • 配置自动更新

Let’s Encrypt 签发的证书只有 90 天有效期,需要写个自动更新的脚本叫做update_ca.sh,放到crontab执行定时任务,脚本如下:

#!/bin/bash
         cd /home/xxx/www/ssl/
         python acme_tiny.py --account-key account.key --csr domain.csr --acme-dir /home/xxx/www/challenges/ &gt; signed.crt || exit
         wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem &gt; intermediate.pem
         cat signed.crt intermediate.pem &gt; chained.pem
         service nginx reload

         vim /etc/crontab 加入以下内容,一个月执行一次:
         0 0 1 * * nobody /home/xxx/update_ca.sh &gt;/dev/null 2&gt;&amp;1

注意,为了安全,crond执行的用户角色是nobody,所以相关联的文件属组需要改成nobody,这样才有权限执行相应的读写。

安装Letsencrypt创建免费SSL证书

Let’s Encrypt是由Internet安全研究组(ISRG)管理的SSL证书颁发机构。 它利用自动证书管理环境(ACME)自动部署几乎被所有主流浏览器信任的免费SSL证书。
本教程将涵盖以下内容:
安装Letsencrypt ACME客户端。
获取Letsencrypt证书。
需要注意和维护的事项。
关于Let’s Encrypt及其颁发的证书的技术细节。

下载和安装Let’s Encrypt

1.安装git
CentOS

  1. sudo yum install git

Debian / Ubuntu

  1. sudo apt-get install git

2.从官方的GitHub存储库下载Let’s Encrypt。 /opt是第三方软件包的公共安装目录,所以让我们将安装到/opt/letsencrypt:

  1. sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

3.切换到/opt/letsencrypt目录

  1. cd /opt/letsencrypt

创建SSL证书

Let’s Encrypt使用一系列验证来自动完成域名验证(DV)。 证书颁发机构(CA)通过一些方法来验证计算机域的真实性。 一旦您的服务器验证通过,CA将颁发SSL证书给您。
1.使用–standalone参数运行Let’s Encrypt。 对于需要证书的每个其他域名,请将-d example.com添加到命令的末尾。

  1. sudo -H ./letsencrypt-auto certonly –standalone -d example.com -d www.example.com

注意:
Let’s Encrypt不部署通配符证书。 每个子域都需要自己的证书。
2.指定管理电子邮件地址。 这为了让您能重新获得丢失证书的控制权,并在必要时接收紧急安全通知。 按TAB,然后按ENTER或RETURN保存。
3.同意服务条款。
4.如果一切正常,将出现类似下面的消息。 它的输出意味着Let’s Encrypt已经批准并颁发了您的证书。

IMPORTANT NOTES:
– If you lose your account credentials, you can recover them through
e-mails sent to [email protected].
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your
cert will expire on 2016-03-31. To obtain a new version of the
certificate in the future, simply run Let’s Encrypt again.
– Your account credentials have been saved in your Let’s Encrypt
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Let’s
Encrypt, so making regular backups of this folder is ideal.
– If you like Let’s Encrypt, please consider supporting our work by:

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

Let’s Encrypt证书目录结构

1.列出/etc/letsencrypt/live目录:

  1. sudo ls /etc/letsencrypt/live

2.在创建SSL证书单节的步骤1中指定的各个域名都有自己的目录。 列出以下任意域名目录:

  1. sudo ls /etc/letsencrypt/live/example.com

输出:
cert.pem
chain.pem
fullchain.pem
privkey.pem
3.每个key(.pem)文件有不同的用途:
cert.pem:唯一的服务器证书。
chain.pem:根和中间证书。
fullchain.pem:服务器,根和中间证书的组合(替代cert.pem和chain.pem)。
privkey.pem:私有密钥(不要与任何人分享这个!)。
Let’s Encrypt从中间证书颁发机构颁发证书。 中间证书已由Identrust交叉签名,确保最终证书与所有主要浏览器之间的兼容性。 有关详细信息,请参阅Let’s Encrypt的官网。
4.显示fullchain.pem的文件状态:

  1. sudo stat /etc/letsencrypt/live/example.com/fullchain.pem

输出:

  1. File: ‘live/example.com/cert.pem’ -> ‘../../archive/example.com/cert1.pem’

注意这个文件指向了一个不同的文件,就像步骤3中列出的四个文件一样。它们是软链接,链接到/etc/letsencrypt/archive目录中的证书文件。
5.如果您忘记续订域名证书,Let’s Encrypt将删除/etc/letsencrypt/live中对应的目录(和软链接)。 但是,目录(和软链接)将保留在/etc/letsencrypt/archive和/etc/letsencrypt/keys目录中,以供需要时查看。

维护

续订SSL证书

1.回到cd /opt/letsencrypt目录

  1. cd /opt/letsencrypt

2.执行您在创建SSL证书的步骤1中使用的命令,添加–renew-by-default参数:

  1. sudo -H ./letsencrypt-auto certonly –standalone –renew-by-default -d example.com -d www.example.com

3.片刻之后,将出现以下内容:
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your
cert will expire on 2016-03-31. To obtain a new version of the
certificate in the future, simply run Let’s Encrypt again.
– If you like Let’s Encrypt, please consider supporting our work by:

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

自动续订SSL证书(可选)

我们建议您设置自动更新证书,因为很忘记到期日期,尤其是如果您拥有多个不同的域名。 为了避免此问题,并可以使用cron来自动续订证书。
1.在我们执行下面的命令之前,让我们将其分解,并进行一些修改:

  1. echo ‘@monthly root /opt/letsencrypt/letsencrypt-auto certonly –standalone –renew-by-default -d example.com -d www.example.com >> /var/log/letsencrypt/letsencrypt-auto-update.log’ | sudo tee –append /etc/crontab

@monthly:为了简单起见,此命令将在每月的第一天的午夜执行
root:以root用户身份运行命令
/opt/letsencrypt/letsencrypt-auto certonly -standalone -renew-by-default -d example.com -d www.example.com:letsencrypt-auto更新命令。
»/var/log/letsencrypt/letsencrypt-auto-update.log:将标准输出和标准错误记录到名为letsencrypt-auto-update.log的日志文件
tee -append /etc/crontab:将新的cron作业保存到/etc/crontab文件
2.执行您修改的命令以将cron作业添加到您的服务器。

更新Let’s Encrypt

1.回到/opt/letsencrypt目录

  1. cd /opt/letsencrypt

2.从你上次下载Let’s Encrypt的仓库拉取对Let’s Encrypt所做的任何更改:

  1. sudo git pull