1.用libuv处理server socket
bind
listen
accept
read->write
2.用openssl处理ssl/tls,mem_bio可以使你不必使用openssl自己的socket操作
BIO_write
BIO_read
3.用joyent/http_parser解析http协议
4.构造响应信息,这是一个完全的字符串操作
5.反过来,用openssl加密
6.用libuv把数据写入socket
完工
==========
补充一个
windows下可以用schannel代替openssl;还有就是openssl也可以读取.pfx文件,不必非要pem/pvk
推荐使用Facebook proxygen库https://github.com/facebook/proxygen,对于最新的标准都有支持。http client和http server都有比较简单易懂的用例。
目录
服务器
真正懂TLS的人会告诉你,服务器端不要自己写,用nginx做个代理就可以了,特性与坑不是一般的多。
客户端
客户端用libev/libevent,SSL_read、SSL_write吧。
参考: https://github.com/pengjianzhang/net-utils/blob/master/ssl-bench/ssl-bench.c
先实现网络库。在网络库底层的读写处理中插入ssl read,ssl send即可。
再在封包处理中实现http的解析。
具体的可以私信我,哈哈,我有写。当然也建议仔细看muduo啦。
RFC2616
RFC2818
再加上你所要用的操作系统的socket网络开发。直接搞定。