背景
据国外媒体Venturebeat报道,谷歌宣布,今年7月起,Chrome浏览器的地址栏将把所有HTTP标示为不安全网站。这是谷歌浏览器针对HTTP网站开战的第三步棋。
HTTPS是HTTP协议的升级版本,更为安全可靠。互联网用户和网站之间的安全连接协议被视为减少用户风险的必要措施,否则用户可能遭受窃听、中间人攻击或数据篡改。
数年来,谷歌一直力推HTTPS协议,去年它更是加快推进速度,对Chrome的用户界面做出了一些改变。
2017年1月发布的Chrome 56浏览器开始把收集密码或信用卡数据的HTTP页面标记为“不安全”。若用户使用2017年10月推出的Chrome 62,带有输入数据的HTTP页面和所有以无痕模式浏览的HTTP页面都会被标记为“不安全”。
这些措施的成效很明显。谷歌和Mac生态系统中,Chrome浏览器超过78%的流量都在使用HTTPS。而Android和Windows生态系统中,Chrome的68%流量来自HTTPS。但谷歌还未止步。
对于这一变化,谷歌解释道:
Chrome新界面将帮助用户了解所有的HTTP网站都是不安全的,从而采用安全的HTTPS网站。HTTPS比以往任何时候都更便利、更便宜,它带来了性能提升和强大的新功能,这些都是HTTP所没有的。
Chrome目前以黑色字体标示“不安全”字样,最终谷歌会把“不安全”标为红色,并在旁边添加表示警告的红图标,为的是进一步强调HTTP网站不应被信任。
另一个是HTTP 协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的 HTTP 的网站是不太安全的。所以, Google 的 Chrome 浏览器将在 2017 年 1 月开始,标记使用不加密的 HTTP 协议的网站为 Not Secure,不安全。
目前免费证书
目前市场上免费的证书较多,如下:
1、Let's Encrypt
2、StartSSL免费DV证书
3、Comodo PositiveSSL
4、RapidSSL
5、沃通(Wosign)免费DV证书
我用的是 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的根证书时也没问题[15]。为了解决对Windows XP的兼容性,目前Let's Encrypt已经获取了另外两个根证书,原来的证书作为备用。[15]
Let's Encrypt的开发者们本计划在2015年年末推出签发ECDSA根证书的服务,但该计划已经经历三次推迟,目前定于2018年3月前完成。[16]
2017年6月,Let's Encrypt宣布将于2018年1月启用ACME v2 API。[17]
2017年7月,Let's Encrypt宣布将于2018年1月支持通配符证书。[18]
以上介绍文字来自 Wikipedia 的 Let’s Encrypt 词条。
为你的网站来安装一个证书十分简单,只需要使用电子子前哨基金会EFF的 Certbot,就可以完成。
安装
1)首先,打开 https://certbot.eff.org 网页。
2)如下图,你需要选择一下你用的 Web 接入软件 和你的 操作系统。比如,我选的,nginx 和centos6
下载并赋予cerbot-auto执行权限:
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
开始获取证书
这里我们选择执行只获取证书,自己手动配置:
$ sudo ./certbot-auto --nginx certonly
安装时内容如下:
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): wbaiked@163.com-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: YWhich names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: itwgy.com
2: itwgy.com
3: itwgy.com
4: itwgy.com
5: itwgy.com
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 2
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for itwgy.com
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/ itwgy.com/fullchain.pem
Your key file has been saved at: /etc/letsencrypt/live/ itwgy.com/privkey.pem
Your cert will expire on 2018-05-14. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- 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
这样证书就成申请成功了,下来我们来配置一下:
nginx配置
配置如下:
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/ itwgy.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ itwgy.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
注:这里建议配置 http2,这要求 Nginx 版本要大于 1.9.5。HTTP2 具有更快的 HTTPS 传输性能,非常值得开启,具体可以参考(A Simple Performance Comparison of HTTPS, SPDY and HTTP/2),如果nginx版本问题的话,就只需把listen这行的http2删除了就行。
配置完成后,执行nginx -s reload一下就可以了
证书有效期
刚才创建完证书后,你会发现 Your cert will expire on 2018-05-14,该证书只有90天有效期,那么不可能等到过期了再更新吧,官网也给出了解决方案,如下:
首先,你可以通过
./certbot-auto renew --dry-run
命令续订,如果你嫌麻烦就加到crontab中定时执行每两个月执行一次这样永远不会过期了
0 0 1 * * /root/certbot-auto renew --dry-run
保险起见,你也可以加个定时检查证实的脚本
./certbot-auto renew
根据执行检查脚本判断证书的有效性,执行结果如下:
The following certs are not due for renewal yet:
/etc/letsencrypt/live/itwgy.com/fullchain.pem (skipped)