操作方法:使用nginx轻松生成和续订证书

2025-07-07 15:30:02 4
  • 收藏
  • 管理

    在尝试了letsENCRYPT客户端之后,我发现了一种自动生成和续订证书的好方法。我在这里使用的是nginx,但任何网络服务器都可以工作。这种方法不涉及任何letsENCRYPT命令的代理,也不涉及自动修改nginx配置,因此非常安全。

    必备条件:letsEncrypt CLI工具

    此方法允许您使用1个命令生成和续订let加密证书。如建议的那样,这很容易实现每60天续订一次。

    您需要在您需要证书的所有域上的端口80上使用nginx进行应答。然后,您需要在/.well-now/acme-challengl上处理letsEncrypt使用的挑战。

    然后,我们调用letsENCRYPT命令,告诉工具将质询文件写入我们在nginx配置中用作根目录的目录中。

    我重定向HTTPS上的所有HTTP请求,因此我的nginx配置如下所示:

    服务器{

    听80;

    听[::]:80;

    SERVER_NAME Example.net Example.org;

    位置‘/.知名/ACEME-挑战’{

    DEFAULT_TYPE“文本/普通”;

    根目录/tMP/letsEncrypt-AUTO;

    }

    位置/{

    }

    }

    如果我添加一个新域并使用SERVER_NAME*;,我创建一个具有所需主机名的新证书,并且仅使用新生成的证书为监听443的该域添加新的vhost,则此批准允许我不再需要进行任何nginx配置更改。

    然后,要为这些域生成初始证书:

    $EXPORT DOMAINES=“-d Example.net-d Example.org”

    $EXPORT DIR=/tMP/letsEncrypt-AUTO

    $SERVICE NGINX重新加载

    该命令将输出签名证书的路径,您可以像往常一样将其添加到您的nginx配置中。私钥位于与生成的fullchain.pem相同的目录中

    A LET加密证书的有效期为90天,建议每60天续费一次。这里需要自动化以避免任何过期的证书!

    要续订证书(例如,在cron作业中),请使用--renewarg调用相同的命令:

    $EXPORT DOMAINES=“-d Example.net-d Example.org”

    $EXPORT DIR=/tMP/letsEncrypt-AUTO

    $SERVICE NGINX重新加载

    Renchap:

    您还可以通过再次使用相同的命令来获得一个重复的证书,其中带有一个--Duplate arg。

    不太熟悉重复标志,在什么情况下需要重复证书?如果使用通过LSSLHTTPS?提供的多个本地平衡Web服务器,则复制允许您使用不同的私钥,并能够在需要时撤销此特定密钥。

    一种常见的用例是向管理您的一个域(子域通常带有通配符)的外部方/服务器提供副本,或者如果您需要在不同的硬件中使用您的证书,并且希望在其被破坏时只能撤销其中的一个。NICE不知道您可以使用letsEncrypt客户端来实现这一点,所以您复制了用于CDN HTTPS自定义SSL使用的SSL证书

    哦,复制会将符号链接重写到活动的域SSL吗?或者它得到自己的符号链接单独的文件?是的,这将是一个有效的用例。因此,如果CDN证书被攻破,您可以吊销它们,而不是您用于此域的其他证书。

    副本创建了一个全新的证书,例如命名为“Example.net-0001”而不是Example.net,谢谢@renchap澄清,Renaud,您提到我们需要安装CLI工具。这是你克隆GitHub回购时得到的结果吗?

    LetsENCRYPT-AUTO??,我使用的是FreeBSD,所以我只需要运行pkg installpy27-letsENCRYPT

    服务器{

    监听443 SSL1;

    根目录/var/www/您的路径;

    Index index.php index.html index.htm;

    #使站点可从http://localhost/访问

    服务器名称您的域名www.youdomain.com;

    #如果您使用的是HHVM,则应包含您的标准php配置或其他配置

    包括hhvm.conf;

    位置/{

    Try_files$uri$uri//index.php$is_args$args;

    }

    SSLON;

    Ssl_证书/etc/letsencrypt/live/yourdomain.com/cert.pem;

    Ssl_证书_密钥/etc/letsencrypt/live/yourdomain.com/privkey.pem;

    启用了SSL_STAPPING;

    SSL_STAPPING_VERIFY ON;

    Ssl_Trusted_证书/etc/letsencrypt/live/yourdomain.com/fullchain.pem;

    SSLSession_TIMEOUT 5M;

    最重要的是,我在我的cronTab中添加了以下内容:

    *3 2 1-12*bash-L-c“mkdir-p/tMP/letsENCRYPT-AUTO&/ROOT/letsENCRYPT/letsENCRYPT-AUTO CENTALLY-d MAINDOMAIN-d SUBDOMAIN-1-d SUBDOMAIN-2--ACCOVE-TOS--默认续订--a webroot--webroot-Path=\”/tMP/letsENCRYPT-AUTO\“&SERVICE NGINX RELOAD”

    所以它每个月更新一次,每个月的第二天,两点,我建议看看这个剧本。

    与以下crontab项结合使用:

    30 2**1/usr/local/sbin/le-renew-webroot>>/var/log/le-renewal.log

    来源:DigitalOcean让我们加密文章,我有一个为mydomain.com和www.mydomain.com设置的nginx的lets加密证书,我想将该证书用于static.mydomain.com。续订时,是否可以添加首次设置证书时尚未指定的“静态”子域。如果不是,那么如何进行呢?谢谢,@iyedb,您使用webroot认证获取证书了吗?

    如果您运行certbot certonly--force-renew-d mydomain.com-d www.mydomain.com-d static.mydomain.com,它应该执行续订,用一个新的证书替换现有的证书,该证书也包括static.mydomain.com的覆盖范围(尽管我不确定您是否需要用-w显式指定新域的webroot)。,@Schoen Thank you。我使用的命令是:./letsENCRYPT-AUTO CERTONLY-a webroot--webroot-path=/usr/share/nginx/html-d Example.com-d www.Example.com。

    所以这就是:

    Certbot certonly--force-renew--webroot-w/var/www/Example-d Example.com-d www.Example.com-w/var/www/Static-d static.example.com应该可以做到这一点。太棒了!为了将来参考,这个方法很管用。续订证书使用不同的Webroot.添加新的子域,我很高兴它为您正常工作,并感谢您在这里记录您的经历。

    上一页:操作流程的全攻略 下一页:操作如何让网站快速上首页
    全部评论(0)