启用SSL已经有段时间了,使用的是 Let’s Encrypt 免费证书,除了需要每季度更新一次维护外,一切正常使用,包括WEB和iOS,因为历史原因Android还没有完全切到HTTPS协议,也正因为漏掉Android这一块无意间避过了中间证书的问题,一直到微信小程序开发过程中发现接口访问报 request fail 错误,由此填坑的过程揭开SSL中间证书的面纱
先来认识一下中间证书
中间证书,其实也叫中间CA(中间证书颁发机构,Intermediate certificate authority, Intermedia CA),对应的是根证书颁发机构(Root certificate authority ,Root CA)。为了验证证书是否可信,必须确保证书的颁发机构在设备的可信 CA 中。SSL的验证机制是由一级一级追溯验证,当前CA不可信则向上层CA验证,直到发现可信或没有可信CA为止,注意有时候Intermedia CA也有可能在设备的可信CA中,这样不用一直追溯到Root CA,即可认证完成。
根证书,必然是一个自签名的证书,“使用者”和“颁发者”都是相同的,所以不会进一步向下检查,如果根 CA 不是可信 CA ,则将不允许建立可信连接,并提示错误。
一般Root CA是要求离线保存的,如果要签发证书也是通过人工方式签发,这样能最大程序保证Root CA的安全,而Intermedia CA则相对宽松,允许在线签发证书的,这样方便高效,安全性灵活,即便通过Root CA签发的Intermedia CA发生意外泄露,也可以通过Root CA进行撤销
中间证书的运行机制
阅读全文…

运行在后台,每天不动声色地完成工作,完美的解决备份、同步问题,这个就是 Resilio Sync,文件同步软件,从第一次接触到现在就一直默默地帮我们完成文件同步。然而最近因为『众所周知的原因』我们要跟它说再见了 阅读全文…
大家都知道网站启用SSL数字证书后使用HTTPS协议可以保证服务器与浏览器端数据加密,但与此同时不可避免另外一个问题,总存在部分用户会直接输入域名的方式访问网站,默认浏览器是使用HTTP协议访问网站的,此时即便网站启用了SSL数字证书,此时用户与服务器端的数据交互仍然使用的是明文传输方式,用户数据得不到保护,因为SSL数字证书没有生效。
可能你会说那不如直接关闭80端口吧(好吧,如果你是API等后台服务大可不必考虑前台用户访问的问题)或HTTP访问的时候直接跳转到HTTPS协议吧(直接跳转其实也存在『中间人』攻击风险),其实这个问题有更好的方案,这就是下面要介绍的
HSTS(HTTP Strict Transport Security),它是一个Web安全策略机制(web security policy mechanism),它通过服务器为HTTP响应增加如下一个Header 来让浏览器强制使用HTTPS与网站进行通信,以减少会话劫持风险:
Strict-Transport-Security:max-age=63072000; includeSubdomains; preload
只要在服务器返回给浏览器的响应头中,增加 Strict-Transport-Security这个HTTP Header 浏览器都将直接强制性的发起HTTPS请求,现在访问机制如下

阅读全文…

因为macOS系统(包括Mac OS X系统)自带python安装,但因为操作系统本身依赖且版本较低,这里采用Homebrew安装隔离的python环境,Homebrew的特性这里不作延展,后续专门写一篇介绍.
安装 OpenCV2
brew tap homebrew/science
brew install opencv
安装结束后 opencv会被安装到 /usr/local/Cellar/opencv/2.4.13.2/ 目录
python调用opencv是通过 /usr/local/Cellar/opencv/2.4.10/lib/python2.7/site-packages/ 目录下面的
cv.py
cv2.so
阅读全文…

这段时间头条被一条关于Google开源JPEG编码器『Guetzli』的信息刷屏,『质量不变,体积减小35%…』,看着都让人激动,如果属实这应该是图片压缩技术上的一次重大突破,带着好奇心我仔细查阅了相关文档并做了一次全面测试,得到的结论是:基本属实,但也不用『辣么鸡冻』,为什么我下面会告诉你 阅读全文…
Let’s Encrypt是由 ISRG(Internet Security Research Group,互联网安全研究小组)发起,由Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构支持的免费、自动化、开放的证书签发服务。
Let’s Encrypt 与 IdenTrust 的 DST Root CA 做了交叉认证,兼容性还是非常不错的,目前能做到主流系统包括XP系统也能得到很好的支撑,同时安全性上面Let’s Encrypt支持ECC 证书(目测采用的是ECDHE 密钥交换、RSA 签名方式)
Let’s Encrypt目前完全免费,支持3个月证书有效期,到期可自动续签,关于有效期这个应该是一个就安全性考量的策略,好在自动化做的非常不错,再加上各种自动化的申请、过期续签方案,已经做到很方便了。
Let’s Encrypt 的证书签发过程使用的是 ACME (Automated Certificate Management Environment)协议,目前官方和第三方工具都是基于此协议,官方推荐工具列表在这里
这里推荐 acme.sh 实测系统兼容性非常好,对其他库的依赖和版本依赖相对较小,CentOS 5.8系统 python 2.4.3 完美实现,这里简单讲一下acme.sh的安装和使用吧,官方有中文教程 在这里 阅读全文…
Chrome确实是一个非常值得推荐的浏览器,简洁、快速、方便,而且再也不用担心3Q大战2选1地难堪了
最近遇到一个挺郁闷的事情,Chrome一次更新后,启动页面发现网页快捷缩略图变小了,看着别扭,而且底部“来自其他设备的同步“和”最近关闭的标签页”这两上常用功能也不知道哪去了,反正就一个字,很不爽。一度还是为是版本问题,还特意去重新安装了一下,只是在未登陆状态还原了状态,但是登陆后还是出现这样的情况.后来发现原来是Chrome的一个实验功能导致的问题,最近Google推出一个在启动页面与默认搜索进行整合的功能,实际发现其实功能并不好用,天朝环境下Google搜索经常中断,况且本人现在改用www.so.com了,所以果断停用实验功能,恢复后那叫一个精神气爽啊
恢复步聚如下
地址栏打开 chrome://flags/ 搜索找到“启用 Instant Extended API Mac, Windows, Chrome OS”,下拉菜单选择“已停用”重启浏览器就OK了
阅读全文…
不知道算不算全国先进,反正武汉智能公交做的确实算是件实事,现在武汉已经有很多公交站点都有显示屏滚动显示公交到站位置,等车的时候再也不用望眼欲的感觉。配套的还有手机应用,等车的时候手机查一下就可以看到还有几站车就到了,确实方便.
只可惜,智能公交的官方APP支持的手机操作系统版本有限,我1.6的Android是没法装了,刚好今天上班路人和同意谈起这个,一时兴起中午休息的时候仔细研究了一下,原来官方是有WEB版的,一试,也确实不怎么滴,只支持PC,反正我的手机浏览器是没办法打开正常使用。动了一点小脑筋,自己做了一个Web版的,有兴趣的童鞋可以试试,虽然简陋了一点,实用就行,至少有浏览器的手机就可以用
接口是自己做的代理,因为跨域问题,用我的博客做了个接口代理,JSONP形式接口。目前实现了公交线路位置查询,改天再完善一下.有需要的童鞋可以直接用.
武汉智能公交web版(非官方版)/ibus/
源码:https://github.com/aboutstudy/intelligent-bus-wuhan

今天一同事提出编程风格统一问题,刚好提到花括号(大括号)是否应该另起换行的问题引起了异义,一起以来我都采取的是直接另起一行的风格,可能跟接触的语言和工具有关吧。接触的比较多的都是Linux类开源方案,入门从C开始,然后一直是用的PHP做为主要开发语言,再就是JavaScript了,其他的用的比较少的就是Object-C和Python了.
目前流行的应该主要是以下两种风格:
风格一:起首的大括号另起一行
block
{
…….
}
风格二:起首的大括号跟在关键字后面
block{
… …
}
我一直采用的是风格一,起因是最早接触语言风格的是Linux相关的资料,提的比较多的就是GNU语言风格,信奉的理由也很简单,做为开源方向的童鞋来讲,Linux内核开发遵守的规范“你值得拥有” 🙂 ,应该C和C++的童鞋一般都采用这种风格的比较多,当然PHP也有很多:)
风格二传说是Java语言开发规范用的比较多的,K&R style?who care? 阅读全文…