用 C++ 写 HTTPS 客户端和服务器大体步骤有哪些?

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网络开发。直接搞定。