目录

给自己的站点加上https——为自己的域名加上一把绿色的小锁

HTTPS

HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护。 HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:

  1. 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;
  2. 用户相信证书颁发机构仅信任合法的网站;
  3. 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
  4. 该证书正确地验证了被访问的网站(如,访问https://example 时收到了给“Example Inc.”而不是其它组织的证书);
  5. 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。

证书提供商选择

在看到了一篇HTTPS的文章后就给自己的网站加上了https,在证书上选择了Let’s Encrypt 提供免费的,为期90天证书,但是免费啊。

安装自动部署工具

在centos7之上的系统可以直接运行以下命令

1
2
yum install epel-release
yum install certbot

安装证书

1
certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.is

将上面的/var/www/example 修改为你的站点的路径,example.com修改为你的域名。首次安装会展示一个蓝色的面板, 会要求你输入一个邮箱,和你的域名,你需要将域名绑定到你的服务器上,否则会产生炎症失败的问题https://img.cdn.resowolf.com/static/WechatIMG2.jpeg 验证成功的就不插图了网上摘了一段代码来

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/your.domain.com/fullchain.pem. Your cert
   will expire on 20XX-09-23. To obtain a new or tweaked version of
   this certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - If you like Certbot, please consider supporting our work by:
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

更新证书 &续期

首先进行模拟更新

1
certbot renew --dry-run

之后写定时脚本,定期更新证书

1
crontab -e

在文件中加上一下定时命令就可以了,我的是每两个月的1号两点更新,日志输出到相应的文件

1
* 2 1 */2 * certbot renew --dry-run >> /var/log/le-renew.log

在执行 crontab -e你的服务器可能会提示你 no crontab for root - using an empty one,这时你需要在进入编辑页面就按住“shift”+ “+“键

详细的定期更新请看 每多少天执行命令

配置nginx

执行完以上操作就算是对证书这块做完了,剩下的事情就是配置nginx以支持https了,不说废话,我就直接贴出我的配置文件了

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
server{
        #listen 80;
        listen 443 ssl http2;
        server_name  songyichao.com;
				if ($scheme = http) {
                return 301 https://$server_name$request_uri;
        }
        ssl_certificate      /etc/letsencrypt/live/songyichao.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/songyichao.com/privkey.pem;
        #charset koi8-r;
        ssl_trusted_certificate /etc/letsencrypt/live/songyichao.com/chain.pem;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        access_log  logs/host_songyichao.access.log  main;
        root   /search/service/nginx/html/songyichao;
        index index.php index.html index.htm;
        location / {
                if (!-e $request_filename){
                        rewrite ^/(.*) /index.php last;
                }
        }
				.......
}

至此,网站的小绿锁就加完了。但是我的虽然加上了https但是没有小绿锁,这是由于多说引用的第三方头像导致的,以后可能考虑更换别的评论插件,或者做一下反向代理。