服务器之前从Let’s Encrypt申请的https证书到期了,没有自动更新证书,上个月有一台web服务是使用了certbot自动申请,更新证书的,没有记录,这次再操作有点生疏了,还是趁这次,把操作过程记下来,加深印象,理解吧

HTTPS简介

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS)是一种网络安全传输协议。在计算机网络上,HTTPS经由超文本传输协议进行通信,但利用SSL/TLS来对数据包进行加密。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性

HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护。

SSL/TLS 是什么?

“ HTTP over SSL/TLS ”字面意思就是带“安全套接层”的 http 协议,内心纯洁的同学也可以理解为“带安全套的 http ”,因为带了安全套,所以当然会比较安全(/(ㄒoㄒ)/~~)。其中 SSL 是“ Secure Sockets Layer ” 的缩写,是“安全套接层”的意思。 TLS 是 “Transport Layer Security” 的缩写,是 ” 传输层安全协议 ” 的意思。 SSL 和 TLS 是同一个东西的不同阶段,理解为同一个东西也行,都是安全协议就对了。

为什么要部署 https

说到底,就是 https 更安全。甚至为了安全,一个专业可靠的网站, https 是必须的。 Firefox 和 Chrome 都计划将没有配置 SSL 加密的 http 网站标记为不安全(貌似 Firefox 50 已经这么干了),目前它们也正在联合其他相关的基金会与公司推动整个互联网 https 化,现在大家访问的一些主要的网站。如 Google 多年前就已经全部启用 https ,国内的淘宝、搜狗、知乎、百度等等也全面 https 了。甚至 Google 的搜索结果也正在给予 https 的网站更高的排名和优先收录权。

Let’s Encrypt 简介

Let’s Encrypt 是 ISRG (Internet Security Research Group) 提供的一个免费、开放、自动化的证书签发服务。ISRG 是一个美国公益组织,总部在加州。由于得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构的支持,发展十分迅速,甚至连老牌的免费 SSL 服务商 StartSSL 也坐不住,推出了类似 Let’s Encrypt 的自动签发和续期工具。

Certbot 简介

Certbot 的官方网站是 https://certbot.eff.org/ ,打开这个链接选择自己使用的 web server 和操作系统,EFF 官方会给出详细的使用方法

安装certbot

#sudo yum install epel-release

#sudo yum install certbot

安装过程中可能会报错,建议安装前,更新下pip

pip install --upgrade pip

至少这些包要更新下

pip install requests urllib3 pyOpenSSL --force --upgrade

还有个错误,需要安装下pyOpenSSL 0.14及以上的版本,我是下载了pyOpenSSL-0.15.1-1.el7.noarch.rpm解决的

sudo rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm

安装证书

certbot certonly --email ff@mail.com --agree-tos --no-eff-email --webroot -w /var/www/html/home -d xx.xx.com

证书信息会生成在 /etc/letsencrypt/live 目录

配置nginx

ssl_certificate /etc/letsencrypt/live/xx.xx.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xx.xx.com/privkey.pem;

下面是一些本地不想在修改配置到新地址时,做个软连接就好

建立软连接

ln -sfn /etc/letsencrypt/live/xx.xx.com/fullchain.pem fullchain.pem
ln -sfn /etc/letsencrypt/live/xx.xx.com/privkey.pem privkey.pem

配置定时任务 (没有装crontab的话,安装下)

yum -y install yum-cron

crontab -l

30 2 15 * * /usr/bin/certbot renew >> /var/log/le-renew.log
35 2 15 * * /usr/local/openresty/nginx/sbin/nginx -s reload