M2Crypto的set_client_CA_list_from_file()和load_verify_info()有什么区别?何时使用它们?
M2Crypto库在它的SSL.Context对象上有一些与CA(证书授权)相关的功能,但文档对于什么时候使用某些功能以及为什么使用这些功能的说明非常模糊。实际上,几乎所有功能的文档都是“将CA证书加载到上下文中”,所以看起来它们可能都做了相同的事情。
有几个 示例使用了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 个回答
2
如果你的服务器需要客户端提供一个证书,它可以通过指定有效的客户端证书颁发者来限制谁可以使用这些证书,这个操作是通过调用 set_client_CA_list_from_file 来实现的。不过,这种情况其实比较少见。
客户端通过调用 load_verify_locations 来指定有效的服务器证书颁发者。几乎所有的客户端都应该这样做。
客户端和服务器都可以调用 load_cert 来设置自己的证书。服务器几乎总是应该这样做,而客户端只有在服务器要求提供证书时才应该这样做。
我推荐你看看一本书,叫做 Network Security with OpenSSL,作者是 John Viega、Matt Messier 和 Pravir Chandra,ISBN 是 059600270X,这本书会更详细地解释这些问题。