从TCP到HTTPS代码实现-https服务器
https 就是在http和tcp之间加一道加密的过程, 在代码上的实现和一般的TCP Server区别就两点
- 在accpet之后要由ssl接管套接字, 协商加密算法,交换密钥等.
- 之后的send(), recv()替换成SSL的 SSL_write(), SSL_read()
https 就是在http和tcp之间加一道加密的过程, 在代码上的实现和一般的TCP Server区别就两点
C语言实现https请求, 先贴上代码, 以下代码来自<<HTTP权威指南>>, 稍作修改
浏览器是怎么保证访问的网站是正经的官方网站而不是其他的钓鱼网站呢,Chome浏览器访问网站时,可信任的网站地址旁边会有一个绿色的锁标准,表明该网站是可信任的,它是怎么知道该网站是可信任的呢。
因为浏览器会内置一些证书,其他证书都是有这些证书签发的, 通过内置的证书来验证其他证书的有效性。这些浏览器内置的证书叫做Root CA(根CA证书), 其他网站的证书都是由Root CA证书一层一层往下签发的。
公司做了一个DNS服务器,测试没问题了,架设到网关上使用,出现了电脑能解析域名,手机不能解析的情况问题。
有时候找到问题在哪比解决问题本身更难。同一个路由器的下的电脑能访问,手机不能访问。先在网关上进行抓包,分析手机发送的DNS请求和电脑发送的DNS请求有什么不同,无果,手机和电脑发送的DNS请求并没有什么不同,服务器端返回的响应也一样。找了一下午也没有找到。有时候找bug就像写作一样,当写不出东西的时候不如出去走走,弄不好灵感就来了。第二天偶然发现手机上并不是所有的域名都不能解析,有个别的域名还是能访问的,又进行了一些域名进行尝试,总结出一个规律:知名的网站大多数不能访问比如百度、腾讯、网易等等,而一些不知名的小网站能够访问。尝试尝试自己注册的域名,果然能访问。有突破口就好办了,然后开始分析公共DNS服务器返回的大网站和小网站的DNS报文有什么不同。