如何免费启用https
建站 刘宇帅 6年前 阅读量: 1468
正如大家所看本站使用了https,这篇文章就来讲下如何免费为自己的站点添加https支持。 Let's Encrypt是一个提供免费https证书的认证机构,而Certbot是遵循其协议的客户端程序。而本站就是使用的Certbot Let's Encrypt的维基词条
Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。 Let\'s Encrypt由互联网安全研究小组(缩写ISRG)提供服务。主要赞助商包括电子前哨基金会、Mozilla基金会、Akamai以及思科。2015年4月9日,ISRG与Linux基金会宣布合作。 用以实现新的数字证书认证机构的协议被称为自动证书管理环境(ACME)。Let's Encrypt宣称这一过程将十分简单、自动化并且免费。 2015年6月,Let's Encrypt得到了一个存储在硬件安全模块中的离线的RSA根证书。这个由IdenTrust证书签发机构交叉签名的根证书,被用于签署两个证书。其中一个就是用于签发请求的证书,另一个则是保存在本地的证书,这个证书用于在上一个证书出问题时作备份证书之用。因为IdenTrust的CA根证书目前已被预置于主流浏览器中,所以Let's Encrypt签发的证书可以从项目开始时就被识别并接受,甚至在用户的浏览器中没有信任ISRG的根证书时也没问题[15]。为了解决对Windows XP的兼容性,目前Let's Encrypt已经获取了另外两个根证书,原来的证书作为备用。
具体操作
- 打开Certbot官方下载地址https://certbot.eff.org/, 并根据页面上提示选择对应的系统下载相应的Certbot客户端
- 为下载的客户端添加可执行权限
chmod a+x certbot-auto
-
生成证书
- 生成泛域名证书
./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d "*.你的域名.com" --manual --preferred-challenges dns-01 certonly
- 生成特定域名证书
./certbot-auto certonly --webroot -w /paht/to/save/certificate -d www.你的域名.com
- 生成泛域名证书
- 配置nginx
https配置
server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/lfuture.cc/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/lfuture.cc/privkey.pem; …… …… }
http 80 端口配置
server { listen 80; server_name lfuture.cc www.lfuture.cc default_server; return 301 https://www.lfuture.cc$request_uri; }
reload nginx
sudo nginx -s reload
- 配置定时更新
Let's Encrypt证书默认有效期是90天,所以我们需要定时更新证书,我们这里使用crontab来做,首先把certbot-auto移入PATH目录里(或者在crontab里配置全路径)。
我们这里配置每天1点1分来更新证书。1 1 * * * certbot-auto renew
执行上面命令会报以下错误
Cert is due for renewal, auto-renewing... Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration. The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)
这里是说Certbot在非交互模式下无法确认身份,需要实现一个hook校验,参考Pre and Post Validation Hooks。
由于在证书快要过期之前的一个月,Certbot就会发邮件通知,所以我们也可以在命令行完成更新。certbot-auto certonly --manual -d www.lfuture.cc nginx -s reload