M2Crypto的set_client_CA_list_from_file()和load_verify_info()之间有什么区别?你何时使用它们?

时间:2009-12-04 16:39:07

标签: python m2crypto

M2Crypto library在其SSL.Context object上有一些与CA相关的功能,但文档目前还不清楚何时使用某些功能及其原因。实际上,几乎所有文档的文档都是“将CA证书加载到上下文中”,因此它们似乎都可以做同样的事情。

several examples同时使用set_client_CA_list_from_file()load_verify_info(),但还有其他类似的功能,如load_client_ca()load_verify_locations()

我正在写客户端和服务器件。我应该使用哪些功能?为什么?他们具体做什么?

修改

查看我看到的代码:

# Deprecated.
load_client_CA = load_client_ca = set_client_CA_list_from_file

# Deprecated.
load_verify_info = load_verify_locations

所以这有点帮助。这将我们带到两个功能:set_client_CA_list_from_file()load_verify_locations()。但我仍然不能完全区分两者之间的区别。

1 个答案:

答案 0 :(得分:2)

如果您的服务器要求客户端提供证书,则可以通过指定发送者set_client_CA_list_from_file来限制谁是客户端证书的有效颁发者。这实际上非常罕见。

客户端通过调用load_verify_locations来指定谁是有效的服务器证书颁发者。几乎所有客户都应该这样做。

客户端和服务器都可以调用load_cert来设置自己的证书。服务器应该几乎总是这样做。仅当服务器要求客户端提供证书时,客户端才应该这样做。

我建议您选择John Viega,Matt Messier和Pravir Chandra编写的 Network Security with OpenSSL ,ISBN 059600270X,这些内容应该更详细地阐明这些问题。