免费申请 HTTPS 证书,开启全站 HTTPS

作者:HelloGitHub-追梦人物

文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库

HTTP 报文以明文形式传输,如果你的网站只支持 HTTP 协议,那么就有可能遭受到安全攻击。你可以使用 Google 浏览器打开一个 HTTP 协议网站,会发现 Chrome 在网址的左边将这个网站标记为不安全。

HTTPS 为 HTTP 报文提供了一个加密传输的通道,这样攻击者就无法窃听或者篡改传输的内容。要启用 HTTPS,必须向一个可信任机构申请一个 HTTPS 证书。专业的证书申请需要收费,不过对于个人博客网站来说,有很多免费的证书申请机构。比如 Let’s Encrypt,它提供了免费的证书申请服务,申请过程十分简单,只需要运行几条命令即可,而且证书到期后支持自动续期,可谓一劳永逸。接下来我们就是用 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: No module named ‘requests.packages.urllib3‘ 的错误,这是由于 requests 和 urlib3 版本过低所致(可以参考这个 issue 的讨论),解决办法是重装它们,运行下面的命令:

$ 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

会有一系列交互式的提示,首先会让你输入邮箱,用于订阅。然后输入 a 同意他们的政策。

接着 certbot 会自动扫描出来域名,根据提示输入想开启 HTTPS 的域名标号:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: django-blog-tutorial-v2-demo.zmrenwu.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter ‘c‘ to cancel): 1

然后 certbot 会做一个域名校验,证明你对这个域名有控制权限。验证通过后,Let‘s Encrypt 就会把证书颁发给你。

最后会提示你是否把 HTTP 重定向到 HTTPS,当然选择是,这样 certbot 会自动帮我们修改 Nginx 的配置,将 HTTP 重定向到 HTTPS,如果用户使用 HTTP 协议访问我们的博客网站,就会重定向到 HTTPS 协议访问,确保安全性。

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you‘re confident your site works on HTTPS. You can undo this
change by editing your web server‘s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press ‘c‘ to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/django-blog-tutorial-v2.conf

certbot 申请的证书只有 3 个月有效期,不过没有关系,certbot 可以无限续期,我们增加一条 crontab 定时任务用来执行 certbot 自动续期任务,这样一次申请,终生使用。

打开 /etc/crontab,增加定时任务:

echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null

这里配置每天 12 点执行自动续期命令。

由于全站开启了 HTTPS,因此需要把网站中非 HTTPS 的内容(比如通过 HTTP 协议请求的外部资源)改为 HTTPS,我们的博客中目前有一处引入外部图标库的样式文件是以 HTTP 协议引入的,需要改为 HTTPS:

base.html

<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">

以上,简单几步,就开启了全站 HTTPS。



『讲解开源项目系列』——让对开源项目感兴趣的人不再畏惧、让开源项目的发起者不再孤单。跟着我们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎留言联系我们、加入我们,让更多人爱上开源、贡献开源~

原文地址:https://www.cnblogs.com/xueweihan/p/11619556.html

时间: 2024-11-07 06:53:07

免费申请 HTTPS 证书,开启全站 HTTPS的相关文章

【原创】免费申请SSL证书【用于HTTPS,即是把网站从HTTP改为HTTPS,加密传输数据,保护敏感数据】

今天公司有个网站需要改用https访问,所以就用到SSL证书.由于沃通(以前我是在这里申请的)暂停了免费的SSL证书之后,其网站推荐了新的一个网站来申请证书,所以,今天因为刚好又要申请一个证书,所以,我就到这个网站申请了证书,趁着有一点点小空隙的时间,然后最近也没新写博文了,有些手痒痒.所以,就写了一下这个申请流程,流程就是如下: 1,打开进入网站:https://www.startssl.com/ 2,如果还没有账号的,那就先注册,方式如下: 然后他就会给你填写的有限发送验证码,这时候,进入你

使用腾讯云大禹开启全站HTTPS

大禹DDoS(BacisAntiDDoS)基础防护是针对DDoS攻击为腾讯云用户推出的免费服务,可为用户抵御基础的DDoS攻击,提供最高2G的防护能力.大禹DDoS基础防护为用户在业务服务前筑起一道堤坝,常见的DDoS攻击将无法威胁到用户的业务. 除了这些功能以外,大禹还有一个其他多数CDN不具备的功能--全站HTTPS,以下是使用腾讯云大禹开启全站HTTPS的方法. 申请SSL证书 申请地址https://console.qcloud.com/ssl 申请方法http://jingyan.ba

WordPress博客DUX主题如何开启全站HTTPS?

佐言的WordPress博客昨晚上连夜进行了SSL证书申请并改造,本以为按照空间域名服务商SSL认证申请上面的方法弄,个人博客网站就能直接在浏览器上面显示绿色安全标志HTTPS://,那知道其实不只是这样的,今天白天佐言通过对谷歌浏览器,火狐浏览器.世界之窗浏览器.360安全浏览器以及搜狗浏览器访问博客才发现,只有搜狗浏览器和360浏览器才能显示安全绿色的https://协议认证标签,其他浏览器都没有显示,我以为是SSL证书的问题,提交了域名空间服务商技术才知道,原来佐言的个人博客网站还没有开启

使用Let&#39;s Encrypt客户端免费申请SSL证书

Mozilla.思科.Akamai.IdenTrust.EFF 和密歇根大学研究人员联合宣布了 Let's Encrypt CA 项 目,计划为网站提供免费的基本 SSL 证书,以加速互联网从 HTTP 向 HTTPS 过渡.Let's Encrypt CA 将由非赢利组织 Internet Security Research Group (ISRG) 运营,今天12月4日凌晨项目正式进入公测阶段,遂赶紧进行申请试用一下. 之前我申请证书都是用BS方式,这次是CS方式,感觉挺新鲜. 我的服务器环

【Other】申请免费的SSL证书及部署Https协议

序: 如今的开发中我们会注意到很多的网站都从http协议变成了https,不谈技术,但从外观就比较招我喜爱.故今天研究一下. 0x01:简谈http与https两者的区别. http:http为超文本传输协议,数据传输以明文的方式传输. https:https为http + ssl组成的加密传输的网络协议,与http相比较为安全.(盗一张图) 优缺点:优点 -> https在传输中对数据进行密文发送,大大降低了中间人拦截/篡改数据. 缺点 -> https并非绝对安全,由于数据进行了加密在性能

gitlab开启https加密 and 全站https

建立SSL目录, 然后拷贝你的证书到SSL目录: # mkdir /etc/gitlab/ssl  # chmod 700 /etc/gitlab/ssl # cp luck.crt luck.key /etc/gitlab/ssl/ 编辑/etc/gitlab/gitlab.rb文件, 修改成: external_url "https://www.abc.com" nginx['redirect_http_to_https'] = true nginx['ssl_certificat

免费申请SSL证书 为您的网站加锁

5个多月前,整个互联网都被“Heartbleed”这个OpenSSL 软件的安全漏洞所震惊.事后,大家都在疑惑,本来采用SSL证书是为了数据传输的安全性,是为了更安全,可是结果呢? 不过,这个问题早已经被解决了,受影响的用户更新OpenSSL软件即可:请千万不要听信有些砖家的挖坑建议:不使用https,就没有问题了.如果不使用的话,那就不只是黑客能窃取数据,而是所有人都可以非常容易地窃取. SSL证书的作用 (1)网站身份实名认证.验证域名所有权和网站所有权,并对网站服务器真实身份进行国际验证,

手机APP也要安装HTTPS证书?手机移动端怎么安装SSL证书?

现代社会,我们对于手机的依赖已经是细思极恐的阶段了,几乎每个人闲暇时都低着头看手机,就连日常工作中都离不开手机,庞大的移动端客户群体,让移动端变得异常火热.那么,你知道移动端也是需要安装SSL证书的吗?下面小编就给大家举几个移动端需要SSL证书的例子!以下文章由SSL盾小编整理发布,更多证书安装指南[www.ssldun.com] 企业邮箱 越来越多的人开始使用手机来发送邮件,即使是企业邮件通过手机发送的也越来越多,企业邮件里面涵盖了很多企业的重要信息,一旦被***,信息被泄露,那么企业的损失可

【独家】七牛为开发者倾情奉献,性能秒杀 RSA 的 ECC 证书免费申请

一.背景 据记载,公元前 400 年,古希腊人发明了置换密码.1881 年世界上的第一个电话保密专利出现.在第二次世界大战期间,德国军方启用「恩尼格玛」密码机,密码学在战争中起着非常重要的作用. 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在 1997 年,美国国家标准局公布实施了「美国数据加密标准(DES)」,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有 DES.RSA.SHA 等.随着对加密强度需求的不断提高,近期又出现了 AES.ECC 等.