2

M2Crypto库在其SSL.Context 对象上有一些与 CA 相关的函数,但文档并不清楚何时使用某些函数以及为什么。事实上,几乎所有的文档都是“将 CA 证书加载到上下文中”,因此它们似乎都做同样的事情。

几个 同时使用and的示例,但也有其他类似的功能,如and 。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(). 但我仍然不能完全区分两者之间的区别。

4

1 回答 1

2

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

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

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

我建议您选择 John Viega、Matt Messier 和 Pravir Chandra 撰写的Network Security with OpenSSL,ISBN 059600270X,它可以更详细地阐明这些问题。

于 2009-12-04T19:54:30.153 回答