我有一个标准的MongoDB SSL环境 ,使用RSA密钥将mongo有线协议用SSL / TLSencryption。 我有在MongoDB服务器和客户端通过tcpdump进行通信的数据包捕获。 我拥有涉及encryption的证书的所有权。
我抓住了握手的机会,DHE / ECDHE / PFS不在场。
如何解密现有数据包捕获中的信息来检查数据包的mongo-wire协议部分的内容?
你几乎肯定不能因为前向保密。
由于某种原因,MongoDB的硬编码SSL密码列表为HIGH:!EXPORT:!aNULL@STRENGTH 。 这个结果取决于它所针对的OpenSSL版本,但是在现代系统上会导致使用前向保密的密码而不是那些不使用前向保密的密码。
您可以在目标系统上看到生成的密码列表:
openssl ciphers -v 'HIGH:!EXPORT:!aNULL@STRENGTH'
当SSL / TLS连接使用正向保密时,即使您拥有SSL证书私钥,也无法解密会话。 这是向前保密的全部要点; 即使攻击者 (无论是你还是罪犯还是NSA)获得你的私钥的控制,它也能防止以前的会话被解密。