今天,我把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 code http:// 的地方。

对于我这个使用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 的。

嗯,12306,你什么时候按照这个教程做一下你的证书?

(全文完)


关注CoolShell微信公众账号可以在手机端搜索文章

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

——=== 访问 酷壳404页面 寻找遗失儿童。 ===——

Related Posts

DNS

Simple DNSCrypt – 保护网络安全,一键使用 DNSCrypt 加密 DNS 流量 [Windows]

Simple DNSCrypt 是一款简单易用的 DNS 流量加密工具,它能够让中间人或者第三方无法窥视到你的 DNS 流量,从而保护网络安全,个人隐私。@Appinn 注意,需要打开图片上的 DNSCrypt 服务,并选择网卡,才能开始使用 DNSCrypt 协议。 DNS 流量加密,使用了DNSCrypt 协议,你可以想像成 HTTPS 一样,只不过这次加密的是 DNS 流量,这样就可以保护网络安全,防止钓鱼网站等诸多问题。 DNSCrypt 是一种认证 DNS 客户端和 DNS 解析器之间通信的协议。它可以防止 DNS 欺骗,使用加密签名验证来自所选 DNS 解析器的响应,并确保没有被篡改。 Simple DNSCrypt 其实是基于 DNSCrypt Proxy 的一款易于使用的工具,而后者可以在其他平台上使用。 Simple DNSCrypt 默认已经内置了不少支持 DNSCrypt Read more…

技术读物

关于我”极客时间“的专栏

不少朋友都知道我在“极客时间”上开了一个收费专栏,这个专栏会开设大约一年的时间,一共会发布104篇文章。现在,我在上面以每周两篇文章的频率已发布了27篇文章了,也就是差不多两个半月的时间。新的一年开始了,写专栏这个事对我来说是第一次,在这个过程中有一些感想,所以,我想在这里说一下这些感受和一些相关的故事,算是一个记录,也算是对我专栏的正式介绍,还希望能得到、大家的喜欢和指点。(当然,CoolShell这边还是会持续更新的) 为什么要开设一个收费专栏 首先,说一下,为什么要开这个收费专栏。 老实说,我一开始根本就不想开收费专栏的,是的,完全不想!主要是有两个原因,一方面是我在创业中,我自然是没有太多的时间,另一方面是,我以前在《为什么我不在微信公众号上写文章》也说过,我觉得知识最好的方式是被检索、讨论、引用、整理、补充和更新。所以,收费这种模式,我感觉并不利于很好的传播。但是,我为什么还干了这么一件事?这事还得从2017年6月份开始说起。 这个月,一共有三家技术社区来找我,都是希望我能去他们那边开收费专栏,其中一家就是“极客邦科技”。对于这三家来说,从一开始我就是以婉拒的姿态回应的。而“极客邦科技”来找我的时候和我说,一周写五篇,写一年,一共260篇。我当时心想,“去你的,当我啥呢,你们真以为技术文章好写啊”?然后,他们问我可以写多少,我说,我现在也就一个月一篇的节奏…… 然后,就开始了时间漫长的拉锯战。极客邦这边一直从6月份和我谈到9月份,完全就是不达目的不罢休的玩法,其间,每当我说一个问题,他们就会想出一个解,我这边不断地制造不能写下去的问题,他们就不断的给出相应的解。我其实是想让他们知难而退,另外,我也不确定这帮人对于这个事有多上心,因为写技术文章是需要非常认真的态度的,所以,我提出了很多比较苛刻的条件,甚至也很直白的直接拒绝,但是他们完全就跟没有听见似的,不断的想新的方法来让我”上床”(对!就是上床,不是上船)。 我说,我最多一个月写2-3篇。他们和我说,我们看过了,你写的都是长文,都在5000字左右,一篇可以拆成上下篇,这样就有6篇左右了,然后,你每个月再来两篇文章,一篇是推荐一些资料或资源,一篇是回答读者的问题。这样就有8篇了,一周就可以发2篇了。 我说,就算是这样,我也没有时间写,我现在创业中,事多得去了,完全没精力投入。然后,他们说,不用你写,我们来帮你写。你去客户那边,叫上我们,你到大会上做分享,叫上我们,你和别人分享,也叫让我们,我们全程录音,然后帮你你整理。然后每周末的时候来找你,和你聊上2个小时。我们把内容做出来,你再精编一下就好了。而且,我们也会帮你分担创业的精力的,我们极客邦/QCon/ArchSummit会帮你的产品做推广、做市场和BD客户…… 我说,就算是这样,我也没时间。他们说,我们还会给你配个编辑,一个不够就配两个,他们会帮你上网查资料,他们都是计算机专业的,一定是懂技术的。不会让你一个人写的。专栏这种事一定是会需要一个小的编辑团队的。 他们还甚至在晚上10点左右跑到我家门口来和我谈。这还没完,我继续刁难他们…… 我说,技术文章相当专业,你们来试试看,于是,我给了一篇极其难读的英文论文,还有一篇技术细节非常晦涩的英文文章,我让他们不要翻译,而是读懂后理解完用自己的话,能够让一般人读懂的话写一下。这两篇文章,就算是对于有多年经验的程序员来说,也是很难读的。结果他们一周后,就搞好了,我读了一下,不算特别好,但是对于他们来说,已经很不错了。 我又说,我的文章中会有好些代码,有数学公式,在手机上怎么排版?阅读体验不行吧。你们还要做音频,我的文章中如果有代码,有图片,有数据公式,你让音频时怎么读?这不行吧。他们说,数学公式可以用LaTeX搞,代码排版会努力排好,同时也提供网页端的浏览。音频会这样搞,会让编辑把代码、数学公式、图片理解完后用别外的话说出来。也就是说,文章要有两个版本,一个是阅读的版本,一个是给音频师的版本。 就这样,这几个月的过程中,我心里面有了一些不一样的感觉。 一方面,我觉得这种“不达目的不罢休”的做法让我欣赏。因为我也在创业,创业的过程中有很多难题,也会遇到很多困难和艰辛。而极客邦他们这样的作法我是非常认可,也是非常佩服的,因为,要是换作我,我可能早放弃去寻找其它人了。但是他们没有,他们一直不断地在穷尽一切方法来说服我写专栏。能这样做的人,我觉得这个社会上少之又少,绝大多数人都是畏难和容易退缩的,所以,感觉可以深入交往和合作。 另外一方面,在整个过程中,我问他们,为什么你们要把这个事做得这么“重”?为什么不做得“轻”一点呢?还要录音频,音频对于技术型的文章里面有一堆坑啊,对于技术文章还有很多无法翻译的英文单词,在计算机的世界里,好多英文单词都是造出来的,音频师怎么读?(后来的确也是这样,我的音频师就把J2EE读成了“J二EE”),他们的编辑也不知道怎么读,就上Youtube上找相关视频看老外是怎么发音的,然后标注好。而且,我的文章有时候写得太快,经常会有一些小错误,文字好改,但是还要改语音。对于这些,我都觉得好重啊,结果他们说,就是要做个“重的”,就是要做一个别人达不到的标杆,让竞争对手望而却步! 对于这两点,是让我很赞的。这样的做事精神和态度让我很佩服,是啊,在Amazon里也常说,要不断地提高标准。而且这让我深入思考了一下,一个事如果想要做好,做到极致,就算再简单的事,也会变成复杂,这个世界上可能并不存在“轻模式”,只要你想做好,再“轻”的事都会变“重”。他们的这些做法,让我有了一种同道中人的感觉,人总是会向比自己强的人或是跟自己比较像的人靠近的。我感觉我在创业路上,就是要和这样的人在一起,面对再难的事,都要想尽一切办法解决之,面对再轻的事,都要花心思用重的模式去做好。 而其它两个来找我做同样的事的公司,却没有让我看到他们有这样把事做成的不服输的决心和态度,真是形成了强烈的反差和对比。 于是,我就这样“从”了!这里要点名一下极客邦的两个人——我叫他们作“双蕾”:司巧蕾 和 郭蕾。(池大大也为极客时间付出了好多,因为大家都认识他了,我就弱化他一下了,嘿嘿) 这个专栏主要会写什么样的内容 这是一个收费专栏,一旦收费了,我的压力也大了,因为你要写的内容就一定要能达到可以收费的价值了,不以再像个人博客一样,想写什么就什么。好在我从2003年开始我就在给好多企业做一些商业化的讲座和培训,也给一些公司做过一些商业的咨询和技术方案,包括在过去两年内帮助过一些公司打单。另外,在过去的10年内,我也在技术、职业和成长上帮助过很多年轻人。这些内容,我都没有完整或是具体地写在CoolShell中,所以,我觉得这些内容是可以放在这个收费专栏的。 此外,我在CoolShell上的文章都是不系统的,是碎片式的,还有一些只是知识,还不是认识。而我过去成长的20年,我的经验和知识已经在某些方面形成了比较完整的体系,而且有一些技术也能看到本质上的东西。所以,我觉得这些东西是可以呈现在这个专栏内的,都是非常有商业价值的,一定是可以帮助到大家的。当然,其中的一些东西,不是初级入门的程序员能够看懂的,需要有一定的工作经验和基础知识。 而在我入行的这20年来,我觉得对于一个企业,一个团队,一个个体的程序员来说,有三件事是密不可分,也是相辅相成的,这三件事就是:技术、发展和管理。每个人,每个团队,每个企业,都需要认真地面对技术,不断地挑战新的技术,并且还要非常认真地发展个人和团队,而这些都需要对自我的管理或是对团队和公司的管理才能更高效的达成。 所以,我的专栏会由这三部份构成: 技术。对于技术方面,我不会写太多关于知识点的东西,因为这些知识点大家可以自行Google可以RTFM。我要写就一定是以体系化的,而且要能直达技术的本质。我入行这20年来,我最擅长的是针对各种大规模的系统,所以,我会有2-3个和分布式系统相关的系列文章,然后,我学过也用过好多编程语言,所以,我也会有一系列的关于编程本质的文章,而我对一些基础知识研究的也比较多,所以,还会有一系列的和基础知识相关的文章。当然,其中还会穿插一些其它的技术文章,比如一些热点事件,还有一些经验之谈,包括,我会把我的《程序员技术练级攻略》在这个专栏里重新再写一遍。这些东西一定会让大家有醍醐灌顶的感觉。 成长。在过去这20年中,我感觉得到,很多人都会非常在意自己的成长。所以,我会分享一堆我亲身经历的,也是我自己实验的一定和个人发展相关的文章。比如,像技术变现啊、如何面试、如何选择新的技术、如何学习、如何管理自己的时间、如何管理自己的老板和工作、如何成为一个Leader……这些东西一定会对大家有用。但是,我这里一定不会有速成的东西。一切都是要花时间和精力的。如果你想要速成,你不应该来订阅我的专栏。 管理。这20年,我觉得做好技术工作,得做好技术的管理工作,只有管理好了软件工程和技术团队,技术才能发挥出最大的潜力。大多数的技术都是管理上的问题。所以,我会写上一系列的和管理相关的文章,管理三个要素,团队、项目和管理者自己。所以,我会从这三个方面写一系列包括,人员招聘、绩效考核、提升士气、解决冲突、面对变化、沟通说服、项目管理、任何排期、会议、远程管理……等等一系列的文章。这些东西都是我在外企时,接受到的世界顶级管理培训机构培训内容,我会把我的实践写出来分享给大家。这其中一定少不了亚马逊相关的各种实践。这些东西,我和很多公司和大佬都讲过,到目前为止还没有人不赞的。 现在,我这个专栏写了快三个月了,第一部分和第二部分已经有一些呈现了。我周末和假期的时间也完全都搭进去了 ;-)。后面的文章还在和我的编辑一起在整理和书写中,我感觉这个专栏只收199一年简直是太便宜了,我有点想涨价的冲动了。哈哈。 幕后团队 最后说一下我的专栏编辑——她叫杨爽!以前是CSDN的程序员杂志的编辑,后来去了七牛,现在和我一起做我的这个专栏。她对我的这个专栏上的投入非常大,除了帮助我编辑文章,还要帮音频师标注语气,英文发音,以及音频版的文章,还要深度参与写作,有的文章我只给了一个大纲,甚至只是一个方向,或是一系列的素材,然后都是她来操刀的,比如“推荐阅读”的文章、还有技术领导力的下篇,基本上是由杨爽来出第一版,然后我再上面再做修改和补充。她说,写技术文章真是太累了,尤其是帮你编辑你的分布式系列的文章,我基本都把这些技术都看了个大概了。我调侃到,如果你完全搞懂了,你就不用做编辑了,你可以做技术去了,嗯,而且,可以变成架构师了。 另外,她会深度的编辑我的文章,尤其是每篇文章最后的一些总结或是一些问题都是她写的。在我的一篇答疑的文章中,她自己加入了一个观点——“很多事情能做到什么程度,其实在思想的源头就被决定了,因为它会绝大程度地受到思考问题出发点、思维方式、格局观、价值观等因素的影响”,这个观点被读者当成是我的观点,其实,这是杨爽的观点,当然我也很同意。 所以,我的这个专栏离不开杨爽的付出,我和她一般都是在晚上或是周末沟通,因为平时我的时候都被创业的事给占据了。所以,她也只能适配我的时间,但她真的很努力,我能感觉得到她想把文章的质量不断提高的迫切。 关于专栏的音频师,他叫柴巍,是天津广播电台的主持人,一个89年的小伙子,网上他的个人信息在这里。他跨界来读这些技术文章的确对他来说非常不容易,因为一方面这文章里讲的这些东西他都看不懂,另外,他也不认识我,我脾气和性格他不知道,所以,他读我的文章里,并不能完全准确地把握相关的语气。这就需要杨爽来帮他标注和调整,有些地方,不断地修改,不断地录,大家知道,录音和写文章不一样,文章要修改很简单,语音要修改就非常麻烦,得把上下文全都一并重新再读一篇,这个过程的确难,杨爽在其中也花费了大量的时间和这个小伙子沟通和调整。 Read more…

12306

是不是没有说,卖火车票的 12306.cn 终于是一个安全的网站了

12306,就是那个大名鼎鼎的买火车票的网站,终于、终于、终于可以用不下载那个不安全的根证书,又或者顶着红色地址栏,时时告诉你不安全,然后,他们有合法证书了… 从时间来看,应该上线有 10 来天了。 越来越多的网站已经全面 https 化,包括小众软件,也在前不久全站跳转了 https,而作为这个地球上最大的卖火车票网站,12306 居然长期让用户自己安装根证书… 这种潜在的安全风险是十分巨大的,数据泄露、钓鱼网站、财产损失,都可能会通过一张小小的虚假证书做到。   虽然 12306 首页还挂着让用户下载安装更证书的链接,但已经不重要了,这事要为 12306 点个赞,这就是魔幻主义呀。 另外,不看不知道,青小蛙推荐过超过 10 款买火车票工具了: 订票助手 – Mac 上的开源 12306 购票软件[macOS] 如何在 12306官网 自动刷票,捡漏,购买火车票 铁路12306 – 火车票购票官方手机版[iPhone/Android] 小鱼版 12306 订票助手 .Net Read more…