程序员

Let's Encrypt 开启全民 HTTPS 时代

2016-03-13  本文已影响314人  编程青年
lets-encrypt.png

Let’s Encrypt is a new Certificate Authority: It’s free, automated, and open.

letsencrypt 是一个免费的 CA ,有了它之后,要使用 HTTPS 链接的门槛就被降低了很多,很多个人网站也都能很方便的用上高大上的 HTTPS 了。

为了顺应潮流,这个周末我把 github-comment 这个社会化评论系统也全面升级到 HTTPS 了。

想要使用 Let's Encrypt,必要的条件只有两个:

  1. 自己的服务器
  2. 自己的域名

首先在自己的服务器上下载 Let's Encrypt 的客户端

git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

然后进入 /opt/letsencrypt 目录,执行 ./letsencrypt-auto certonly --standalone (注意执行命令时80端口不能被占用,所以如果你的 nginx 开着的话,要先关掉)。

然后就是交互式的对话框,要你输入邮箱地址(接收过期提醒用),以及要启用的域名(用空格隔开),所有你填写的域名都要能指向执行命令的服务器(如果之前有 A record 是指向 github 的服务器的, 记得转回来)。这样你就会得到一组密钥,例如:

root@ubuntu:/var/www/songofcode.com# ls /etc/letsencrypt/live/songofcode.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem

下面就是对 nginx 的配置了,打开 nginx 的配置文件,加入下面的内容:

server {
        listen 443 ssl;

        server_name github-comment.songofcode.com;

        ssl_certificate /etc/letsencrypt/live/songofcode.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/songofcode.com/privkey.pem;
        location / {
                proxy_pass  http://127.0.0.1:5000;
        }
}

重启 nginx,试着访问 https://github-comment.songofcode.com/, 证明 HTTPS 配置成功了。

原则上说对 HTTP 协议的加密不会影响到应用层,不过实际上从应用的角度说,不修改东西是不可能的,首先我把客户端中所有的 http 访问路径改为了 https,另外还有 github 的 application 处的回调也做了修改。网页处的调用本来就是 https 的 cdn,不过我把版本号升级了,所以网页端也要跟着改。

最后说下,对于我这样比较依赖 github 服务的人来说,这次改动的影响还是蛮大的,因为域名指向了自己的服务器,意味着不能使用 github 提供的 pages 服务了(当然用 github 的子域名还是可以访问的),这样一来项目主页和个人博客都需要自己去 host 到服务器上。没办法 HTTPS 是必然的趋势,github 不支持自定义域名的 HTTPS,那就只好放弃了。

上一篇下一篇

猜你喜欢

热点阅读