![gss_accept_sec_context() 失败:引用的凭据已在 apache、kerberos 和 subversion 1.8 服务器中过期](https://linux22.com/image/633118/gss_accept_sec_context()%20%E5%A4%B1%E8%B4%A5%EF%BC%9A%E5%BC%95%E7%94%A8%E7%9A%84%E5%87%AD%E6%8D%AE%E5%B7%B2%E5%9C%A8%20apache%E3%80%81kerberos%20%E5%92%8C%20subversion%201.8%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E8%BF%87%E6%9C%9F.png)
系统信息
- 服务器:Apache 2.2
- 颠覆:1.8
我们正在使用 Kerberos + Apache + Subversion。直到最近,我们一直在使用 Subversion 1.5 的 dav_svn 模块。我们正在尝试更新到 1.8。
当客户端使用基于 1.8 的 dav_svn 模块运行长检出时,会发出以下错误消息。
[Thu May 15 22:30:29 2014] [error] [client 283.10.15.26] gss_accept_sec_context() failed: The referenced credential has expired (, )
客户端可以续订票证,但 Apache 似乎无法处理第一个票证。接下来我可以检查什么?
答案1
这似乎是 Subversion 1.8 用于 HTTP 访问的 Serf 库中的一个错误。您能否将此问题报告给 Serf 项目问题跟踪器: https://code.google.com/p/serf/issues/list
Subversion 1.5 没有出现此问题,因为 Subversion 1.8 使用所谓的“skelta 模式”进行签出和更新。Skelta 模式对需要从服务器获取的每个资源使用一个 HTTP 请求和响应,而批量更新模式则在一个大规模响应中获取所有资源: http://subversion.apache.org/docs/release-notes/1.8.html#serf-skelta-default
作为解决方法,您可以在服务器配置中添加“SVNBulkUpdates prefer”Apache 指令,以强制 Subversion 客户端使用旧的批量更新模式,该模式使用一个大的请求进行签出/更新。