pysvn.Client.callback_ssl_server_trust_prompt错误

3 投票
2 回答
5700 浏览
提问于 2025-04-16 11:11

我在尝试提交时遇到了 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 个回答

3

我修正了文档中的一个错误,这个错误可能让人对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。

6

当pysvn尝试对通过https访问的仓库进行操作时,它需要验证服务器的身份。这是通过调用一个叫做callback_ssl_server_trust_prompt的函数来完成的。默认情况下,这个函数是没有定义的。作为程序员,你需要提供信任信息,这意味着你需要写一个函数,查看信任字典中的信息,并返回一个包含三个值的元组(这些值在文档的第三段中有描述)。

一旦你写好了这个函数,就可以通过将你的函数名称赋值给client.callback_ssl_server_trust_prompt来让它成为callback_ssl_server_trust_prompt。

撰写回答