ARTS-WEEK6

用户头像
一周思进
关注
发布于: 2020 年 07 月 12 日
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 请求时就明确所要访问的主机域名,这时服务主机就可以正确返回对应的证书,成功建立通信连接。



  • 

openssl s_client -connect testname.com:443 -servername testname.com

代码实现:

客户端只需要在建立 SSL 连接之前,调用 SSL_set_tlsext_host_name(ssl, servername) 接口设置下即可。



Tip

vscode-自动生成代码



Share

想对各位小伙伴,也对自己说:“对于 ARTS 而言,不要因为有几次中断而停止!”



发布于: 2020 年 07 月 12 日 阅读数: 28
用户头像

一周思进

关注

每周学习总结,相信可以走的更远 2017.12.12 加入

嵌入式开发工程师 个人公众号:一周思进

评论 (1 条评论)

发布
用户头像
加油ヾ(◍°∇°◍)ノ゙
2020 年 07 月 12 日 22:08
回复
没有更多了
ARTS-WEEK6