Month: 8月 2017

网页部署https后,如何提升SSL评分到A+

  

牛犊网部署https不知不觉也将近四个月了,期间也一直没有再去进行管理和优化,也没有大家担心的那样访问会因为多次握手有所延迟,一直加载挺快。我想主要还是因为我们这一代人终于搭上了“网络运营商降价提速”的国家政策快车,站长们也基本不用再担心担心客户端的网速问题,而去不断优化JS\CSS\HTML代码了。当然,打铁还需自身硬,自己的服务器配置、带宽还是要跟上时代的步伐的。

牛犊网从2014年搬迁至阿里云之后,由于接入的是BGP网络,访问一直飞快。本来近期有把服务器搬迁至百度云的打算,怎奈一直抢不到6个月免费试用的活动资格,又见阿里云在搞全民计算活动,就趁此将牛犊网的服务器进行了一次升级。

我是一个爱折腾的人,花了一天时间将网站打包下载,上传到新服务器,部署完IIS和SQL后就可以直接访问了,因为文件数据分离,搬迁部署也非常容易。到最后环节就是部署域名证书了。结果闲着无事,就去SSL验证网站(https://www.ssllabs.com/ssltest/)去验证了下安全评级,幸运的是,因为我是win2016服务器,自带IIS10,自动开启http/2.0,检测结果是A。但是看到人家的检测结果是A+,心里就痒痒呀,忍不住就去寻找攻略。

从SSL-LABS上的检测结果来看,网站的HSTS和HPKP的头部没有部署,从百度安全指数网(https://bsi.baidu.com/topic/https.html)查询部署漏洞,也可以得到结果。通过两个头部部署要求分析,HSTS的部署方式较为简单,HPKP的较为复杂,而且容易出错,因此,我选择先从HSTS头部部署开始。

这里我只讲IIS10(IIS7 和 IIS8 同样适用)的部署方案:

这里插一句,如果你的评分低于A,而且还是win+IIS服务环境,可以下载IIS Crypto(地址:https://www.nartac.com/Products/IISCrypto/Download)进行最优安全优化,这样就可以到达A级评分了,然后再来部署HSTS。

最后开始部署HSTS,其实非常的简单,在部署了域名证书的前提下,只要在IIS10设置的HTTP响应标头组件中添加HSTS的访问识别时长就可以了。

内容填写如下:

 

  名称:Strict-Transport-Security

值:max-age=31536000; includeSubDomains; preload

 

这个值是秒,换算过来正好一年。它的意思是接下来的一年时间,强制浏览器浏览页面通过https来访问,这样就可以避免运营商通过http跳转和DNS劫持投放广告了,是不是更安全了呢?

最后,再一次去ssllabs安全评分,就可以拿下A+了,此时成就感爆棚(看图1)~

攻略至此结束,只想说微软的服务器系统设置真的是越来越方便的,部署网络基础环境也是,基本也是无脑留的下一步,下次我找时间讲讲IIS 10如何部署网络基础环境。感谢欣赏和倾听我的唠叨!

作者:琚叶青,牛犊网站长

    

网站开启HSTS严格HTTPS功能并加入HSTS Preload List

从今天开始,土木坛子开启HSTS(HTTP Strict Transport Security)严格强制HTTPS SSL功能。

我一直支持HTTPS,在启用全站HTTPS后,用301的方式将所有HTTP访问请求自动转成HTTPS加密。但这种服务器端301的方式,并不能阻止浏览器到服务器之间HTTP链接被截持,因为此时的通信,并不是HTTPS。

启用HSTS协议后,在初次访问HTTPS后,用户在浏览器中再输入HTTP链接,浏览器本身会将HTTP链接自动转成HTTPS,会更加全面保护访问者的隐私,例如,没有人能在网络上截取你访问过土木坛子上关于艳照门的博文。…

    

Nginx的SSL配置优化

linpx.com用了下面的配置在SSL Labs测试中可以获得A+的最佳评级。

aaaaa1213.png

一般网站使用的SSL证书都是RSA证书,这种证书基本都是2048位的密钥,但是证书密钥交换密钥必须要比证书密钥更长才能安全,而默认的只有1024位,所以我们需要手动生成一个更强的密钥。所以配置之前,如果没有DH-key就需要做下面的步骤…

        

如何直接在github网站上更新你fork的repo?

玩过github的人一定会在你自己的账号上fork了一些github开源项目。这些开源项目往往更新比较活跃,你今天fork用到你自己的项目中去了,过几个星期这个fork的origin可能有一些bugfix了,你怎么办呢?当然直接到Origin repo中去clone是一个方法,但是github的public repo有可能过一段时间就被作者删除了,你是否希望在origin即使已经被删除的情况下,你的账号下依然有你钟情的repo?

最后更新于 2017年11月3日 …

    

PHP 进阶之路 – 亿级 pv 网站架构实战之性能压榨

本博客并非全部原创,其实是一个知识的归纳和汇总,里面我引用了很多网上、书上的内容。也给出了相关的链接。

本文涉及的知识点比较多,大家可以根据关键字去搜索相关的内容和购买相应的书籍进行系统的学习。不对的地方大家予以批评指正。

有人给我留言说,亿级 PV 就别写文章了,随便用几个开源软件就能搞定了,只要不犯什么大错。我不以为然,如果你利用了相同的思想,使用了更高性能的基础服务,也许就能支持更多的流量并发,节约更多的服务器,优化的思路才是重点。

本内容的视频分享见我的直播

                

『浅入浅出』MySQL 和 InnoDB

作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQLPostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系的认知,所以最近两个月的时间看了几本数据库相关的书籍并且阅读了 MySQL 的官方文档,希望对各位了解数据库的、不了解数据库的有所帮助。…

    

服务端指南 | 良好的 API 设计指南

设计一套良好的 API 接口。

版本号

RESTful API 中,API 接口应该尽量兼容之前的版本。但是,在实际业务开发场景中,可能随着业务需求的不断迭代,现有的 API 接口无法支持旧版本的适配,此时如果强制升级服务端的 API 接口将导致客户端旧有功能出现故障。实际上,Web 端是部署在服务器,因此它可以很容易为了适配服务端的新的 API 接口进行版本升级,然而像 Android 端、IOS 端、PC 端等其他客户端是运行在用户的机器上,因此当前产品很难做到适配新的服务端的 API 接口,从而出现功能故障,这种情况下,用户必须升级产品到最新的版本才能正常使用。

为了解决这个版本不兼容问题,在设计 RESTful API 的一种实用的做法是使用版本号。一般情况下,我们会在 url 中保留版本号,并同时兼容多个版本。

GET】 /v1/users/ // 版本 v1 的查询用户列表的 API 接口

mongoDB No suitable servers found 错误解决

一、问题描述
用PHP连接mongoDB时报 No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling ismaster on ‘127.0.0.0:20000’]  错误
二、分析问题
通过查阅各方面的资料,此问题的原因在于,操作系统开启了IPV6支持,但mongod未开启ipv6支持。或者如果是主从的话,可能主从的顺序弄错了。
三、解决问题

1、解决办法有以下3个:

(1)删除操作系统中ipv6解析,删除/etc/hosts'中的'::1 localhost, 这一行

(2)开启mongod的ipv6支持,参数:./bin/mongod –filePermissions 0777 –ipv6

(3) 调整主从顺序。

(4) 也有可能是连接时用的replicaSet参数不对造成的

最后更新于 2020年8月28日 …