我有一个应用程序应用程序框架,可以在网络上未命名的主机之间以对等方式工作。我想对流量进行加密,因此我使用M2Crypto实现了设置,但遇到了麻烦。我不知道在创建证书时应该为“ commonName”加上什么。似乎想要一个域名,但是运行该域名的计算机都将没有该域名。我只是为commonName放置了“ temphost”,但这显然是一个重要的参数。我在尝试测试时得到了这个:


  M2Crypto.SSL.Checker.WrongHost:对等
  证书commonName不匹配
  主机,预期为127.0.0.1,已获得temphost


有没有一种方法可以概括commonName?

最佳答案

因此,根据您对第一个答案的评论,我决定提供另一种可能适合您的情况的解决方案。创建您自己的CA证书和密钥。然后,在您的对等节点中,告诉M2Crypto仅接受此CA签名的证书(请参阅此较早的stackoverflow问题,以了解要使用的API:What is the difference between M2Crypto's set_client_CA_list_from_file() and load_verify_info() and when would you use each?)。

然后,在脚本的早期执行此操作:

from M2Crypto import SSL
SSL.Connection.clientPostConnectionCheck = None


或者是否需要建立其他类型的SSL连接,请查看是否可以控制SSL.Connection对象的创建并使用适当的检查器调用它们的set_post_connection_check_callback()。

此后,您的对等方应接受任何其他对等方,只要该对等方的证书仅与您的CA签署即可。

如果您认为可以在连接后检查中验证的任何其他信息,则可以将该信息放在证书中(也许在commonName中),然后编写自己的检查器以使用(而不是上面的“无”)。

08-08 01:17