Let’s Encrypt 给网站加个小绿锁

网站装逼技能之给网站加小绿锁 本站用的证书是Let s Encrypt 因为它免费而且配置简单 虽然有效期只有3个月,

但可以用 certbot 自动续期,完全不受影响。而且 Let s Encrypt 因为有了 certbot 这样的自动化工具,配置管理起来非常容易。

HTTPS 证书分为3类, 1. DV 域名验证证书 2. OV 组织机构验证证书 3. EV 增强的组织机构验证证书。每类证书在审核和验证方面要求严格程度不同,浏览器会在地址栏给予不同证书不一样的展现。

一般个人使用DV证书完全够了,浏览器表现为地址栏前会有绿色的小锁。下面聊到的免费证书都是 DV 域名验证证书。

1 安装

打开certbot官网 并选择你的对应的服务器类型 就会显示对应的安装的教程 这里是nginx+centos

1.1   yum install epel-release #安装依赖
1.2 下载并给权限
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
1.3 记得先停止nginx 不然80端口会被占用

/usr/local/nginx/sbin/nginx -s stop

2获取证书

./certbot-auto certonly #第一次会安装依赖

选择第二个 然后输入域名

certbo1

certbot2

输入接收提醒的邮箱(不要用小键盘输入) 最后agree

certbot3

certbot4

成功后有如下提示 里面有过期时间 接收提醒邮箱以及证书路径

certbot5

3配置nginx

ssl1

而下面这段是会重定向到https  虽然开启了https,但为了照顾用户的使用体验

(因为用户总是很赖的,一般不会主动键入https,而是直接输入域名, 直接输入域名访问,默认就是http访问)

同时也支持http访问,当用户http访问的时候,就会返回给用户一个302重定向,重定向到https的地址,然后后续的访问都使用https传输

if ($scheme = http) {
rewrite ^/(.*) https://$server_name/$1 permanent;
}

这个302重定向可能会被劫持篡改,如果被改成一个恶意的或者钓鱼的https站点,然后,你懂得,一旦落入钓鱼站点,数据还有安全可言吗?

对于篡改302的攻击,建议服务器开启HTTP Strict Transport Security功能,这个功能的含义是:

当用户已经安全的登录开启过htst功能的网站 (支持hsts功能的站点会在响应头中插入:Strict-Transport-Security) 之后,支持htst的浏览器(比如chrome. firefox)会自动将这个域名加入到HSTS列表,下次即使用户使用http访问这个网站,支持htst功能的浏览器就会自动发送https请求(前提是用户没有清空缓存,如果清空了缓存第一次访问还是明文,后续浏览器接收到服务器响应头中的Strict-Transport-Security,就会把域名加入到hsts缓存中,然后才会在发送请求前将http内部转换成https),而不是先发送http,然后重定向到https,这样就能避免中途的302重定向URL被篡改。进一步提高通信的安全性。

下面这个配置是开启htst  在接下来的两年(即63072000  秒)中,浏览器只要向example.com或其子域名发送HTTP请求时,

必须采用HTTPS来发起连接。比如,用户点击超链接或在地址栏输入 http://www.example.com/ ,浏览器应当自动将 http 转写成 https,

然后直接向 https://www.example.com/ 发送请求。

add_header Strict-Transport-Security “max-age=63072000  includeSubdomains;preload”;

重新启动你的nginx 并访问看看是不是https了 而且有个小绿锁了

如果没有看到小绿锁 但是又有https说明你网页上有不是https的资源链接 修改成https就可以了

hsts

更多请戳这里 http://www.freebuf.com/articles/web/66827.html

4续期

因为Let’s Encrypt三个月就过期了 但是我们只要一句命令就可以续期了

./certbot-auto renew

你可以加到cron里每三个月后执行