pysvn.Client.callback_ssl_server_trust_prompt错误
我在尝试提交时遇到了 pysvn.Client.callback_ssl_server_trust_prompt required
的错误。我知道这和网络验证的信任有关。
这里有相关的文档,但我看不太懂。
pysvn.Client.callback_ssl_server_trust_prompt
import pysvn
def ssl_server_trust_prompt( trust_dict ):
return retcode, accepted_failures, save
client = pysvn.Client()
client.callback_ssl_server_trust_prompt = ssl_server_trust_prompt
每当一个HTTPS服务器展示一个证书,而Subversion不确定是否应该信任这个证书时,就会调用
callback_ssl_server_trust_prompt
。这个函数会带着关于证书的信息被调用,这些信息在一个叫做信任字典的地方。
failures - 整数 - 代表失败的位掩码
- [这些位是什么意思?] hostname - 字符串 - 证书是从哪个主机名展示的 finger_print - 字符串 - 证书的指纹 valid_from - 字符串 - 证书从这个ISO8601日期开始有效 valid_until - 字符串 - 证书在这个ISO8601日期之前有效 issuer_dname - 字符串 - 颁发者的名字 realm - 字符串 - pysvn期望
callback_ssl_server_trust_prompt
返回一个包含三个值的元组 (retcode, accepted_failures, save)。retcode - 布尔值,如果没有用户名和密码可用则为False。如果Subversion要使用用户名和密码则为True。 accepted_failures - 整数,表示允许的失败数量 save - 布尔值,如果你希望Subversion记住这个证书在配置目录中则返回True。如果不想保存这个证书则返回False。
2 个回答
我修正了文档中的一个错误,这个错误可能让人对retcode的意思产生误解。更新后的文档已经上线,地址是:
http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_client_callback_ssl_server_trust_prompt
trust_dict中的所有值都有详细的说明。
通常情况下,你会提示用户来决定是否信任服务器的证书。
不过,这里有一个最简单的函数,它会始终接受服务器的证书。
def ssl_server_trust_prompt( trust_dict ):
return (True # server is trusted
,trust_dict["failures"]
,True) # save the answer so that the callback is not called again
这是pysvn的作者Barry Scott。
当pysvn尝试对通过https访问的仓库进行操作时,它需要验证服务器的身份。这是通过调用一个叫做callback_ssl_server_trust_prompt的函数来完成的。默认情况下,这个函数是没有定义的。作为程序员,你需要提供信任信息,这意味着你需要写一个函数,查看信任字典中的信息,并返回一个包含三个值的元组(这些值在文档的第三段中有描述)。
一旦你写好了这个函数,就可以通过将你的函数名称赋值给client.callback_ssl_server_trust_prompt来让它成为callback_ssl_server_trust_prompt。