我想弄清楚客户端和服务器之间的安全连接是如何建立的。我尝试了 boost::asio 库提供的 SSL 示例。我的问题是关于客户端和服务器使用的证书。具体来说,我生成了一个私钥(mykey.pem)。然后我使用这个私钥生成一个自签名证书(mycert.pem),我使用这些文件如下:
服务器端:
1)context_.use_certificate_chain_file("mycert.pem", error);
context_.use_private_key_file("mykey.pem", boost::asio::ssl::context::pem, 错误);
context_.use_tmp_dh_file("dHParam.pem",error);
客户端:
2)ctx.load_verify_file("mycert.pem",error);
有了这段代码,握手就完美地完成了。我的问题是,为什么服务器和客户端在命令 1 和 2 中都使用相同的证书(“mycert.pem”)?通过这种方法,客户端可以轻松地伪装成服务器。对吗?你认为我在这里错过了什么吗?