ARTS-WEEK6
Algorithm
在极客时间上学习了下相关递归的文章,并做了下爬楼梯问题、汉诺塔问题、赏金问题、整数乘机问题、麦子问题和阶乘问题。
Review
https://en.wikipedia.org/wiki/Server_Name_Indication
eavesdropper:窃听者
discrepancy:差异
impractical:不切实际的
justified:合理的
overhead:开销
constrained:限制
censorship:审查
diagnose: 诊断
dedicated :专用的
通过文章了解了下 openssl SNI 的用途。
为了节省服务器硬件成本,通过虚拟主机技术可以让用户在一台服务器同时运行多个网站。HTTP 协议访问可以通过 hostname 字段来区分是要访问哪个服务。但为了访问安全性,会考虑所有提供的服务都支持 HTTPS 访问,这就需要配置对应的证书。
因为有多个服务网站,如果想多个服务网站配置同一个证书,可以使用通配符证书,但通配符证书仅支持匹配一级子域名;还有一种方法则是在证书中直接指定多个具体域名(subjectAltName字段实现),但这种方法的弊端就是如果主机又多了一个服务网站,需要重新颁发证书。那如果新增的服务网站就配置自己的证书会有什么问题呢?
HTTPS 因为需要先建立 tls 安全链路后才能发送报文数据,即在发送请求报文前,就需要服务端返回对应的证书以建立连接,这就不能像 HTTP 协议那样通过 hostname 来指定要访问哪个服务网站。如果服务主机不能明确客户端要访问哪个网站,可能就返回一个默认证书。但这个证书中的域名实际和客户端要访问的不一致,客户端就可能直接终止连接。
而 SNI 扩展字段,则可以在客户端发送 client hello 请求时就明确所要访问的主机域名,这时服务主机就可以正确返回对应的证书,成功建立通信连接。
代码实现:
客户端只需要在建立 SSL 连接之前,调用 SSL_set_tlsext_host_name(ssl, servername) 接口设置下即可。
Tip
Share
想对各位小伙伴,也对自己说:“对于 ARTS 而言,不要因为有几次中断而停止!”
版权声明: 本文为 InfoQ 作者【一周思进】的原创文章。
原文链接:【http://xie.infoq.cn/article/d455c8c4789416208457988a1】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)