前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >免费升级网站启用HTTPS

免费升级网站启用HTTPS

作者头像
一条老狗
发布2019-12-26 11:54:40
6K0
发布2019-12-26 11:54:40
举报
文章被收录于专栏:极客运维

HTTPS作用

HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTPS相当于在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS作为一种全新的安全协议,对网站本身以及访问网站的网友都有着更好的安全性,防止隐私泄露。HTTPS可以避免第三方窃听或阻断流量,保护用户的隐私和安全,提升口碑。比如可以防止国内某运营商对网站做一些劫持,插入广告弹窗啥的。此外,HTTPS 的网站在搜索引擎中的 rank 会更高,SEO效果会更好。

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 的根证书时也可以。

Consul是一个分布式高可用的系统。

证书部署

1)打开 https://certbot.eff.org 网页。

2)在那个机器上图标下面,你需要选择一下你用的 Web 接入软件 和你的 操作系统。比如,我选的,nginx 和 Centos6

3)然后就会页面下方会有一系列的安装教程。你就照着做一遍就好了。

以 www.hyperxu.com 为例 – Nginx + Centos6

根据系统的不通,安装方法也略有不同,Centos6需要通过相关安装脚本进行部署。

首先下载certbot的自动安装脚本:

代码语言:javascript
复制
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

然后,运行如下命令:

代码语言:javascript
复制
$ sudo ./path/to/certbot --nginx

certbot 会自动检查到你的 nginx.conf 下的配置,把你所有的虚拟站点都列出来,然后让你选择需要开启 https 的站点。你就简单的输入列表编号(用空格分开),然后,certbot 就帮你下载证书并更新 nginx.conf 了。

打开你的 nginx.conf 文件 ,你可以发现你的文件中的 server 配置中可能被做了如下的修改:

代码语言:javascript
复制
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

代码语言:javascript
复制
# 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 就好了。如下所示:

代码语言:javascript
复制
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 就好了。

证书续订

Certbot可以配置为在其过期之前自动续订证书。由于让我们加密证书持续了90天,所以建议您充分利用此功能。您可以通过运行以下命令来测试证书的自动续订:

代码语言:javascript
复制
$ sudo ./path/to/certbot-auto renew --dry-run

设置上自动化的更新脚本,最容易的莫过于使用 crontab 了。使用 crontab -e 命令加入如下的定时作业(每个月都强制更新一下):

代码语言:javascript
复制
0 0 1 * * /usr/bin/certbot renew --force-renewal
5 0 1 * * /usr/sbin/service nginx restart

HTTPS站点调整

在nginx或apache上启用HTTPS后,还没有结束。你可能还需要修改一下你的网站,不然你的网站在浏览时会出现各种问题。

启用HTTPS后,你的网页中的所有的使用 http:// 的方式的地方都要改成 https:// 不然你的静态资源文件等非https的连接都会导致浏览器抱怨不安全而被block掉。所以,你还需要修改你的网页中那些 hard code http:// 的地方。

其大致思路如下:

修改站内资源调用为相对路径或者为HTTPS请求。

修改站外资源调用方式为HTTPS请求。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档