Let’s Encrypt是EFF、Mozilla、Cisco、Akamai、IdenTrust与密西根大学研究职员共同创立的组织,这是一个免费的凭据中央(Certification Authority,CA),目的在于推动环球所有的网站都利用HTTPS加密传输,并由非营利的网际网路安全研究组织Internet Security Research Group(ISRG)卖力营运。
对付开拓者来说,支配HTTPS是一个双赢的选择,用户可以借此得到更加安全的利用体验,而站点也能够抵御恶意软件的注入或广告追踪。Let’s Encrypt已于2015年12月3日进入公测(Public Beta),所有网站都可以免费获取Let’s Encrypt的证书。
听说Google优先收录带HTTPS加密的网站。

Certbot 简介
Certbot 是Let’s Encrypt官方推举的获取证书的客户端,可以帮我们获取免费的Let’s Encrypt 证书。Certbot 是支持所有 Unix 内核的操作系统的。Certbot 的官方网站是 https://certbot.eff.org/
获取Let’s Encrypt证书
项目GitHub地址: https://github.com/certbot/certbot官方教程:https://certbot.eff.org/docs/using.html安装certbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
./certbot-auto --help
解释:
certbot-auto 和 certbot 实质上是完备一样的;不同之处在于运行 certbot-auto 会自动安装它自己所须要的一些依赖,并且自动更新客户端工具。因此在你利用 certbot-auto 情形下,只需运行在当前目录实行即可
certbot的两种事情办法
certbot (实际上是 certbot-auto ) 有两种办法天生证书:
standalone 办法: certbot 会自己运行一个 web server 来进行验证。如果我们自己的做事器上已经有 web server 正在运行 (比如 Nginx 或 Apache ),用 standalone 办法的话须要先关掉它,以免冲突。webroot 办法: certbot 会利用既有的 web server,在其 web root目录下创建隐蔽文件, Let’s Encrypt 做事端会通过域名来访问这些隐蔽文件,以确认你的确拥有对应域名的掌握权。standalone 办法:
service nginx stop
./certbot-auto certonly --standalone --agree-tos -v -t --email xxx@mail.com -d test.com -d www.test.com
--email:自己的邮箱
-d:域名,可以多个
如果申请成功,证书文件放在了/etc/letsencrypt/live下,获取一次有效期为90天
webroot 办法:
./certbot-auto certonly --webroot --agree-tos -v -t --email xxx@mail.com -w /home/wwwroot/test -d test.com -d www.test.com
-w:网站目录
配置nginx,添加https
server{ listen 443 ssl; server_name test.com www.test.com; index index.html index.htm index.php; root /home/wwwroot/test; ssl_certificate /etc/letsencrypt/live/www.test.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.test.com/privkey.pem;}
http要求跳转到https
server { listen 80; server_name test.com www.test.com; return 301 https://$server_name$request_uri;}
如果用的是standalone办法别忘了重启nginx
service nginx start
自动续签
由于证书有效期是90天,以是我们可以用定时程序去续签
15 2 /2 certbot renew --pre-hook \"大众service nginx stop\"大众 --post-hook \"大众service nginx start\"大众–pre-hook 这个参数表示实行更新操作之前要做的事情,由于我有 --standalone 模式的证书,以是须要 停滞 nginx 做事,解除端口占用。–post-hook 这个参数表示实行更新操作完成后要做的事情,这里就规复 nginx 做事的启用
nginx支配HSTS
HTTP严格传输安全(HTTP Strict transport security,HSTS),配置浏览器对全体域名空间利用HTTPS来加密,它具备以下优点:
HSTS可以禁止浏览器利用无效证书(浏览器的默认策略是让用户决定是否放行,而用户每每由于不能区分无效是由于配置问题还是攻击而选择连续访问从而导致遭受网络攻击)HSTS对以下情形可以仍旧保持HTTPS通信:用户保存了原始网站的书签不屈安的CookieHTTPS 剥离攻击网站内容混布,但需合营CSP(内容安全策略)nginx支配HSTS
add_header Strict-Transport-Security \"大众max-age=63072000; includeSubdomains; preload\"大众;
nginx https server完全代码:
server { listen xxxx:443 ssl; server_name www.test.com; add_header Strict-Transport-Security \"大众max-age=31536000;includeSubdomains;preload\公众; ….}