3

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

callback_ssl_server_trust_prompt 每次 HTTPS 服务器提供证书时都会调用,并且 subversion 不确定它是否应该被信任。callback_ssl_server_trust_prompt 使用信任字典中的证书信息调用。

failures - int - 失败的位掩码

  • [这些位是什么意思?] 主机名 - 字符串 - 提供证书的主机名 finger_print - 字符串 - 证书指纹 valid_from - 字符串 - 从此 ISO8601 日期有效 valid_until - 字符串 - 有效使用此 ISO8601 日期 issuer_dname -stirng - 颁发dname realm - string - 领域 pysvn 期望 callback_ssl_server_trust_prompt 返回三个值的元组(retcode、accepted_failures、save)。

retcode - 布尔值,如果没有用户名和密码可用,则为 False。如果 subversion 要使用用户名和密码,则为真。Accepted_failures - int,接受的失败允许保存 - 布尔值,如果你想让 subversion 记住配置目录中的证书,则返回 True。返回 False 以防止保存证书。

4

2 回答 2

6

当 pysvn 尝试对您使用 https 访问的存储库执行操作时,它需要验证服务器身份。这是通过调用一个名为 callback_ssl_server_trust_prompt 的函数来完成的。默认情况下,此函数未定义。作为程序员,你必须提供信任信息,你可以通过编写一个函数来查看信任字典中的信息,并返回一个包含 3 个值的元组(在文档的第三段中描述)。

编写函数后,通过将函数名称分配给 client.callback_ssl_server_trust_prompt 使其成为 callback_ssl_server_trust_prompt

于 2011-02-24T19:12:29.903 回答
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

Barry Scott 是 pysvn 的作者。

于 2016-08-16T10:50:21.810 回答