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()
。但我仍然不能完全区分两者之间的区别。
答案 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,这些内容应该更详细地阐明这些问题。