龙空技术网

为您省钱,nginx配置https(赠免费受信任的ssl证书自动续签脚本)

Linux学习教程 891

前言:

如今我们对“letsencryptnginx”大致比较珍视,朋友们都想要了解一些“letsencryptnginx”的相关内容。那么小编同时在网摘上网罗了一些对于“letsencryptnginx””的相关内容,希望同学们能喜欢,朋友们快快来学习一下吧!

请关注本头条号,每天坚持更新原创干货技术文章。

如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习

1. 前言

本教程申请的是Let’s Encrypt 免费证书。Let’s Encrypt 是国外一个公共的免费 SSL 项目,由 Linux 基金会托管。它的支持者都是大公司,比如 Mozilla、Cisco、Akamai、IdenTrust 和 EFF 等著名的组织,并由这些机构发起的项目,目的就是加速 HTTPS的普及,它是免费的并且可以支持自动续签的,目前 Facebook等企业也在参与项目中。目前主流的浏览器都认可的证书。

本文适用于拥有Linux操作权限并且已经搭建好了nginx站点的用户。

2. 先确保你的DNS A记录设置正确

即进入你的DNS解析商,通常是域名的服务商。把域和IP通过A记录映射好。

3. 安装certbot组件

先安装epel,官方额外的软件yum源仓库。

[root@zcwyou ~]# yum install -y epel-release

安装python2-certbot-nginx组件,本教程用的就是这个软件,它在epel仓库里,所以需要上面的步骤。

[root@zcwyou ~]# yum install python2-certbot-nginx -y

看到下图这样的界面就证明安装成功。

安装python2-certbot-nginx组件

4. 申请证书

执行以下命令全自动安装和配置虚拟站点

[root@zcwyou ~]# sudo certbot --nginx

输入邮箱信息

输入邮箱信息

输入A同意

输入A同意

输入Y同意接收广告信息,本人没有试过N,按理解应该可以拒绝。

输入Y同意接收广告信息

假如你本机上有多个虚拟站点,请选择你要加密的网站,直接按回车表示加密本地所有的网站。

选择你要加密的网站

是否允许强制重定向HTTPS,意思是当用户访问http某网址时,服务器会做301跳转,重定向到https某网址,1表示强制,2表示不强制

是否允许强制重定向HTTPS

它会自动修改你的虚拟站点配置文件:

/etc/nginx/conf.d/xxx.conf

它会增加以下内容:

 listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/指定证书目录/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/指定证书目录/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbotserver { if ($host = 你的网站URL) { return 301 ; } # managed by Certbot listen 80; server_name 你的网站URL; return 404; # managed by Certbot}

如果你想自己配置文件,可以只下载证书文件

[root@zcwyou ~]# sudo certbot --nginx certonly

然后自行修改虚拟站点文件/etc/nginx/conf.d/xxx.conf

查看证书情况,假设你的网站为www/xxx/com:

SSL证书存储位置:

/etc/letsencrypt

/etc/letsencrypt/live/指定证书目录/fullchain.pem

/etc/letsencrypt/live/指定证书目录/privkey.pem

nginx重新加载配置:

[root@zcwyou ~]# nginx -s reload

5. 测试证书

如果一切顺利,你的网站应该可以支持https了。

测试网页的https

6. 测试证书续签

免费的SSL证书只有90天有效期,尝试运行证书更新程序,仅仅是测试,不会实际更新证书文件。

[root@zcwyou ~]# certbot renew --dry-run

执行过程如下,留意最后的Congratulations,表示测试成功。

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Processing /etc/letsencrypt/renewal/你虚拟主机配置文件.conf

Cert not due for renewal, but simulating renewal for dry run

Plugins selected: Authenticator nginx, Installer nginx

Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org

Renewing an existing certificate

Performing the following challenges:

http-01 challenge for 你第一个网站URL

http-01 challenge for 你第二个网站URL

http-01 challenge for 你第三个网站URL

Waiting for verification…

Cleaning up challenges

new certificate deployed with reload of nginx server; fullchain is

/etc/letsencrypt/live/指定证书目录/fullchain.pem

DRY RUN: simulating 'certbot renew' close to cert expiry

(The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:

/etc/letsencrypt/live/指定证书目录/fullchain.pem (success)

DRY RUN: simulating 'certbot renew' close to cert expiry

(The test certificates above have not been saved.)

更新证书测试成功

7. 执行证书续签

手动更新证书,证书快到期时记得执行更新数字证书,当然你可以创建计划任务自动更新。

[root@zcwyou ~]# certbot renew

手动更新ssl证书

计划任务自动更新证书:

[root@zcwyou ~]# crontab -e

自动使用vi编辑器,按键盘上的i进入vi插入模式,复制粘帖以下命令

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew 

粘帖后,按ESC键,然后输入:wq保存退出vi编辑器

添加自动更新证书的计划任务

至此,免费的HTTPS证书已经申请完毕,配置也完成了。

本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:

点击了解更多,快速查看更多的技术文章列表。

标签: #letsencryptnginx