网址打开容易提示不安全,如何免费的让网站启用HTTPS

今日,我把CoolShell变成https的安全拜访了。我承认这件事有点晚了,由于之前的HTTP的问题也有网友告诉我,被国内的电信运营商在拜访我的网站时参加了一些弹窗广告。其他,HTTP的网站在搜索引擎中的rank会更低。所以,这事早就应该干了。现在用HTTP拜访CoolShell会被得到一个 301 的HTTPS的跳转。下面我共享一下启用HTTPS的进程。

我用的是Let’s Encrypt这个免费的解决方案。Let’s Encrypt 是一个于2015年推出的数字证书认证组织,将经过旨在消除当前手动创建和装置证书的杂乱进程的主动化流程,为安全网站供给免费的SSL/TLS证书。这是由互联网安全研讨小组(ISRG – Internet Security Research Group,一个公益安排)供给的服务。主要赞助商包含电子前哨基金会,Mozilla基金会,Akamai以及Cisco等公司。

2015年6月,Let’s Encrypt得到了一个存储在硬件安全模块中的离线的RSA根证书。这个由IdenTrust证书签发组织穿插签名的根证书被用于签署两个证书。其中一个就是用于签发请求的证书,另一个则是保存在本地的证书,这个证书用于在上一个证书出问题时作备份证书之用。由于IdenTrust的CA根证书目前已被预置于干流浏览器中,所以Let’s Encrypt签发的证书能够从项目开端就被辨认并接受,乃至当用户的浏览器中没有信任ISRG的根证书时也能够。

以上介绍文字来自 Wikipedia 的Let’s Encrypt 词条。

为你的网站来装置一个证书十分简略,只需求运用电子子前哨基金会EFF的Certbot,就能够完结。

1)首要,翻开 https://certbot.eff.org网页。

2)在那个机器上图标下面,你需求挑选一下你用的 Web 接入软件 和你的 操作体系。比方,我选的,nginx 和Ubuntu 14.04

3)然后就会跳转到一个装置教程网页。你就照着做一遍就好了。

以Coolshell.cn为例 – Nginx + Ubuntu

首要先装置相应的环境:

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx

然后,运行如下指令:

$ sudo certbot --nginx

certbot会主动查看到你的nginx.conf下的装备,把你一切的虚拟站点都列出来,然后让你挑选需求敞开 https 的站点。你就简略的输入列表编号(用空格分隔),然后,certbot 就帮你下载证书并更新nginx.conf了。

你翻开你的nginx.conf 文件 ,你能够发现你的文件中的server 装备中可能被做了如下的修正:

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/coolshell.cn/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/coolshell.cn/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot



 # Redirect non-https traffic to https
if ($scheme != "https") {
  return 301 https://$host$request_uri;
} # managed by Certbot


这里主张装备 http2,这要求 Nginx 版本要大于 1.9.5。HTTP2 具有更快的 HTTPS 传输功能,十分值得敞开(关于功能你能够看一下这篇文章)。需求敞开HTTP/2其实很简略,只需求在nginx.conf 的listen 443 ssl; 后边加上http2 就好了。如下所示:

listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/coolshell.cn/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/coolshell.cn/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

然后,就nginx -s reload 就好了。

但是,Let’s Encrypt 的证书90天就过期了 ,所以,你还要设置上主动化的更新脚本,最简单的莫过于运用crontab 了。运用crontab -e 指令参加如下的守时作业(每个月都强制更新一下):

0 0 1 * * /usr/bin/certbot renew --force-renewal
5 0 1 * * /usr/sbin/service nginx restart

当然,你也能够每天凌晨1点查看一下:

0 1 * * * certbot renew

注:crontab 中有六个字段,其含义如下:

    第1个字段:分钟 (0-59)
    第2个字段:小时 (0-23)
    第3个字段:日期 (1-31)
    第4个字段:月份 (1-12 [12 代表 December])
    第5个字段:一周傍边的某天 (0-7 [7 或 0 代表星期天])
    /path/to/command – 方案履行的脚本或指令的称号

这么方便的一起,我不禁要问,如果是一些歹意的垂钓网站也让自己的站点变成https的,这个关于一般用来说就有点难以防备了。哎……

当然,在nginx或apache上启用HTTPS后,还没有完毕。由于你可能还需求修正一下你的网站,否则你的网站在浏览时会呈现各种问题。

启用HTTPS后,你的网页中的一切的运用http:// 的方法的当地都要改成https:// 否则你的图片,js, css等非https的衔接都会导致浏览器诉苦不安全而被block掉 。所以,你还需求修正你的网页中那些 hard codehttp:// 的当地。

关于我这个运用wordpress的博客体系来说,有这么几个部分需求做修正。

1)首要是 wordpress的 惯例设置中的 “WordPress 地址 ” 和 “站点地址 ” 需求变更为 https 的方法。

2)然后是文章内的图片等资源的链接需求变更为 https 的方法。对此,你能够运用一个叫 “Search Regex” 插件来批量更新你历史文章里的图片或其他资源的链接。比方:把http://coolshell.cn 替换成了https://coolshell.cn

3)如果你像我一样启用了文章缓存(我用的是WP-SuperCache插件),你还要去设置一下 “CDN ” 页面中的 “Site URL” 和 “off-site URL” 保证生成出来的静态网页内是用https做资源链接的。

基本上就是这些事。期望我们都来把自己的网站更新成 https 的。


(有什么问题欢迎指教,QQ:2172243813 更多资讯尽在www.ttkmwl.com)

上一篇:重庆渝北智慧社区安全便捷获人心


下一篇:容器技术之发展简史