分类
SSL 相关 网络 相关

本站已正式添加DNS CAA

DNS Certification Authority Authorization (DNS CAA)是通过为域名添加一条DNS CAA记录,来限制特定CA为该域名签发证书的一种方法,从而实现防止攻击者使用其他CA错误签发的证书进行中间人攻击。
现在支持DNS CAA的DNS服务供应商还不多,但从2017年9月8日起,所有CA将被要求检查并遵守域的CAA记录,到那个时候DNS CAA应该会快速普及。另一方面,SSL Labs早在今年年初就开始检测DNS CAA记录,虽然暂时还没有影响到评级,但没有添加CAA记录的域名会被标记为橙色警告。
本站现在添加的CAA记录有两条,分别为

prinice.org. IN CAA 0 issue “letsencrypt.org”
prinice.org. IN CAA 0 issue “comodoca.com”

也就是只允许Let’s Encrypt和COMODO两家CA为本域名签发证书。要了解更多DNS CAA的内容,可以参见本站另一篇文章:DNS Certification Authority Authorization (DNS CAA)简介和部署教程

分类
SSL 相关 网络 相关

DNS Certification Authority Authorization (DNS CAA)简介和部署教程

可能很多人对HTTP Public Key Pinning (HPKP)已经有所了解,也有少数网站已经开始部署HPKP用来防止攻击者使用CA错误签发的证书进行中间人攻击。但HPKP由于部署难度非常大,而且不合适的部署会影响网站的访问甚至弄垮一家公司,所以,HPKP的使用率一直不理想。DNS Certification Authority Authorization (DNS CAA)则用另一种实现方法解决了这个问题。
DNS CAA通过添加一条DNS CAA记录,限制可签发该域名证书的CA,从而实现防止攻击者使用其他CA错误签发的证书进行中间人攻击。相比HPKP,DNS CAA的实现更加简单方便,但缺点也很明显。HPKP可以根据需要,固定不同级别的证书,比如可以固定网站现有的证书来实现最高的安全性,也可以固定CA的中间证书,从而保证网站的可访问性,如果你高度信任CA的根证书,甚至还可以固定根证书。而DNS CAA却只能选择一家或几家信任的CA为其签发证书,效果类似于HPKP固定CA的证书。所以,相比HPKP的高部署难度,DNS CAA是一种非常好的折衷方案,并且,它可以和HPKP同时部署。
接下来讲讲如何部署DNS CAA。如果DNS服务提供商有提供CAA记录,那么非常简单,设置一条CAA记录即可,例如Let’s Encrypt的CAA记录。

example.org. CAA 0 issue "letsencrypt.org"

也可以增加以下内容,在发现攻击者使用CA错误签发的证书进行中间人攻击时发送邮件告知。

example.org. CAA 0 iodef "mailto:caa@example.org"

但是,现在支持CAA记录的DNS服务提供商还很少,我知道的只有Google Cloud DNS、DNSimple,不过随着Qualys SSL Labs增加对DNS CAA的检测,相信很快会有更多的DNS服务提供商会增加对CAA记录的支持。
如果要自己部署DNS服务来实现DNS CAA,目前BIND ≥9.9.6, PowerDNS ≥4.0.0, NSD ≥4.0.1, Knot DNS ≥2.2.0都已经对其提供较好的支持。

分类
SSL 相关 Web 服务器

本站已开始使用ECC证书

Let’s Encrypt开始签发ECC证书已经有一段时间了,而且很多网站都开始换用ECC证书了,本站也在最近换用了Let’s Encrypt的ECC证书。这里简单就写个介绍和教程。
ECC证书也就是内置了ECDSA公钥的证书,而传统的RSA证书内置的是RSA公钥。ECC证书公钥长度短,256 bits的ECC Key安全性等效于3072 bits的RSA Key,运算速度更快。因此,ECDHE密钥交换+ECDSA数字签名无疑是目前更好的选择。ECC证书并不支持老旧的Windows XP和Android 2.x,但考虑到本站的客户群根本不是这些用古老客户端的人群,所以就无视了。
比较遗憾的是,现在Let’s Encrypt的中间证书依然是RSA证书,所以从整个证书链来讲也没有缩短多少,期待明年Let’s Encrypt开始采用ECC中间证书。ECDSA Intermediates (ETA: Before March 31, 2017)
这里推荐使用acme.sh来获取ECC证书,使用起来非常简单,而且还支持DNS验证域名,更灵活。
先是安装。

wget -O -  https://get.acme.sh | sh

acme.sh支持多种验证方式,并且支持Apache配置,非常方便,详见GitHub页面
如果你已经在服务器上运行了Apache,并且正确配置了DNS解析、hostname、fully-qualified domain name (FQDN)、ServerName和ServerAlias,那可以直接使用Apache模式,很简单的命令。

acme.sh --issue --apache -d aa.com -d www.aa.com -d user.aa.com --keylength ec-256

这样就获得了ECC证书,并且acme.sh支持自动续期,只要你不更改上面所说的配置,每隔80天会自动续期。ec-256是ECC Key长度,可选ec-384,但其实选用ec-256已经足够安全。
接下来,OpenSSL版本是1.0.2或更高,可以尝试部署ECC+RSA双证书以保证向后兼容性,你也许还需要获取一个RSA证书,只要输入以下命令就行。

acme.sh --issue --apache -d aa.com -d www.aa.com -d user.aa.com

接下来这里讲讲DNS验证,其实也很简单,先输入以下命令。

acme.sh --issue --dns -d aa.com -d www.aa.com -d user.aa.com --keylength  ec-256

然后会看到一串字符串。

Add the following txt record:
Domain:_acme-challenge.aa.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Add the following txt record:
Domain:_acme-challenge.www.aa.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Please add those txt records to the domains. Waiting for the dns to take effect.

去你的DNS服务提供商处添加相应的TXT记录,等DNS记录生效后,再运行以下命令。

acme.sh --renew -d aa.com --ecc

这样就获得了ECC证书。
接下来,你也许还需要获取一个RSA证书,只要输入以下命令就行。

acme.sh --issue --dns -d aa.com -d www.aa.com -d user.aa.com

这时会看到域名已经验证的提示,直接获得对应的RSA证书。更改Apache或者其他要用证书的服务器端软件的配置,也许还要更改一下Cipher Suite等安全配置,参考这里,这样就大功告成了。

分类
Windows 相关 网络 相关

Windows环境nslookup有返回ping不能解析解决方法

单位有几台Windows的电脑无法访问某些地址,用nslookup查看能够顺利返回DNS解析信息,但ping却无法解析。最后发现是DNS Client服务的问题,重启服务就可以解决,但具体原因不详,待进一步查找原因。因为是单位内网机器,补丁也不全,怀疑系统组件或配置被破坏,也可能是病毒影响。
其中一台电脑系统问题太多,最后直接重装系统并安装了全部的安全补丁解决,其他机器安装了全部的安全补丁后解决,看来还是内网安全漏洞导致蠕虫传播引起了这些问题。