个人博客

配置 Nginx 自动更新 Let's Encrypt(Certbot)

28 12月
作者:西洪室|分类:技术|标签:certbot

1、安装

[root@localhost ~]# wget https://dl.eff.org/certbot-auto
[root@localhost ~]# chmod a+x ./certbot-auto
[root@localhost ~]# ./certbot-auto

这个小工具会自动下载并安装相关依赖和 Python 包。稍等一下就完成了。


2、生成证书

    我这里Nginx是编译安装的,不是默认目录,因此有两种安装证书的方式

    ① 执行如果直接执行 ./certbot-auto certonly后,有下面提示,无法打开nginx.conf配置文件,接下来可以根据提示输入信息,生成证书文件,不会修改nginx的配置文件。

[root@localhost ~]# ./certbot-auto certonly
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Error while running nginx -c /etc/nginx/nginx.conf -t.
nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Nginx Web Server plugin (nginx) [Misconfigured]
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 3
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): test@mail.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): test.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for test.com
Input the webroot for test.com: (Enter 'c' to cancel): /var/www



    证书安装完成,会显示证书的存放路径:

/etc/letsencrypt/live/test.com/fullchain.pem;
/etc/letsencrypt/live/test.com/privkey.pem;

    

    ② 如果指定Nginx配置文件路径:

[root@localhost ~]# ./certbot-auto --nginx --nginx-server-root=/opt/nginx/conf
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated)  (Enter 'c' to cancel): test.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for test.com
Using default address 80 for authentication.
Waiting for verification...
Cleaning up challenges
.....

这里会提示你是否自动修改80端口跳转,按照需要选择Y/N

完成后会修改Nginx.conf(域名配置文件),自动加入证书文件。


3、修改 WebServer 配置以提供 HTTPS 服务

    如果按照2-①进行申请的证书,需要修改Nginx域名的配置文件,在新增一个server,配置ssl,并把 listen 80设置跳转:

server {
    listen 443 ssl http2;
    server_name test.com;
    root /var/www;
    index index.php index.html index.htm;

以下是申请证书时使用的 server 配置,现在注释掉root和index,将所有 HTTP 请求都跳转至 HTTPS :

server {
    listen 80;
    server_name test.com;
    #root /var/www;
    #index index.php index.html index.htm;
    return 301 https://$host$request_uri;
}


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

crontab 里加上如下规则:

0 3 */10 * * /root/certbot-auto renew --disable-hook-validation --renew-hook "/opt/nginx/sbin/nginx -s reload" >> /tmp/certbot-"$(date +\%F)".log 2>%1

这样每10天就会执行一次所有域名的续期操作。当然时间也可以自行进行调整,建议别太频繁,因为他们都有请求次数的限制,如果需要强制更新可以在前面命令上加上 --force-renew 参数。

参考: https://certbot.eff.org/docs/

浏览2532 评论0
返回
目录
返回
首页
在zabbix上配置 树莓派 DHT22 在zabbix上配置树莓派DHT22(基于BCM2835 C Library)

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。