
作者:HelloGitHub-捕梦网
HTTP消息以明文传输。如果你的网站只支持HTTP协议,你可能会遭受安全攻击。你可以用谷歌浏览器打开一个HTTP协议的网站,你会发现Chrome在网站左侧将这个网站标记为不安全。
HTTPS为HTTP消息提供了加密的传输通道,因此攻击者无法窃听或篡改传输的内容。要启用HTTPS,您必须从可信机构申请HTTPS证书。专业证书申请需要收费,但是个人博客网站有很多免费的证书申请机构。例如,让我们加密,提供一个免费的证书申请服务。申请流程非常简单,只需要跑几单,证书到期后可以自动续费,可谓一劳永逸。接下来,我们使用Let’s Encrypt提供的工具申请一个免费的HTTPS证书。
首先安装Let’s Encrypt提供的证书申请工具。登录https://certbot.eff.org/,选择我们博客网站使用的服务器软件和操作系统。教程中以Nginx和CentOS 7为例:
首先,安装所需的工具:
$ sudo yum -y install yum-utils$ sudo sudo yum install -y certbot python2-certbot-nginx
Certbot python2-certbot-nginx是Let’s Encrypt提供的申请HTTPS证书的工具,python2-certbot-nginx是专门为nginx设计的插件,让nginx申请服务证书更加简单方便。
然后运行证书应用程序命令:
$ sudo certbot –nginx
注意
测试后,可能会报告ImportError错误:没有名为“requests”的模块。Packages.urlib3 ‘运行上述命令后,这是由于低版本的Requests和urlib3造成的(请参考本问题的讨论[2])。解决方案是重新安装它们并运行以下命令:
$ pip uninstall requests$ pip uninstall urllib3$ yum remove python-urllib3$ yum remove python-requests
然后重装certbot,因为它依赖于上面两个包,所以重装的时候会一起装:
$ sudo yum install -y certbot python2-certbot-nginx
重新执行证书申请顺序:sudo certbot -nginx
会有一系列的互动提醒。首先,您将被要求输入您的电子邮件地址进行订阅。然后输入一个赞成他们的政策。
然后certbot会自动扫描出域名,凭据会提醒你输入你要打开HTTPS的域名号:
你想为哪些名字激活HTTPS
django-blog-tutorial-v2-demo.zmrenwu.com
选择用逗号和/或空格分隔的适当数字,或者保留输入
空白选择所有显示的选项(输入“c”取消):1
有哪些80后创业项目,80后创业项目列表?
然后certbot会做一个域名验证,证明你对这个域名有控制权。验证通过后,Let’s Encrypt将向您发布证书。
最后,会提醒您是否将HTTP重定向到HTTPS。当然选择是肯定的,所以certbot会自动帮我们修改Nginx的设置,重定向HTTP到HTTPS。如果用户使用HTTP协议来满足我们的博客网站,他们将被重定向到HTTPS协议,以确保安全。
请选择是否将HTTP流量重定向到HTTPS,删除HTTP访问。
1:No redirect–不对web服务器配置做进一步的更改。
2:重定向–将所有请求重定向到安全HTTPS访问。选择此为
新网站,或者如果你有信心你的网站在HTTPS工作。你可以撤销这个
通过编辑web服务器的配置进行更改。
选择适当的数字[1-2],然后按[enter](按“c”取消):2
将端口80上的所有流量重定向到/etc/nginx/conf . d/django-blog-tutorial-v2 . conf中的ssl
certbot申请的证书有效期只有3个月,不过没关系。certbot可以无限期更新。我们添加一个crontab义务来实现certbot的自动更新义务,可以终身使用一次。
打开/etc/crontab并添加守时义务:
echo “0 0,12 * * * root python -c ‘import random; import time; time.sleep(random.random() * 3600)’ amp;amp; certbot renew” | sudo tee -a /etc/crontab gt; /dev/null
此处设置为每天12点执行自动续费指令。
因为整个网站开启了HTTPS,所以需要将网站中的非HTTPS内容(比如通过HTTP协议请求的外部资源)改为HTTPS。现在我们博客里有一个通过HTTP协议引入外部图标库的样式文件,需要改成HTTPS:
base.htmllt;link rel=”stylesheet” href=”https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css”gt;
以上,只需简单几步,整个HTTPS站就被打开了。
资源
[1] 你好github-团队堆栈:https://github.com/Hello github-团队/你好Django-博客-教程
[2]问题:https://github.com/certbot/certbot/issues/5104
解释开源项目系列——让对开源项目感兴趣的人不再害怕,让开源项目的发起人不再孤独。通过我们的文章,你会发现开源项目中涉及的编程、使用和发现的兴趣是如此简单。