【问题标题】:Cert already in hash table exception证书已经在哈希表异常中
【发布时间】:2015-06-24 06:27:32
【问题描述】:

我使用的是 chef dk 版本 12,我已经完成了基本设置并上传了许多食谱,目前我在我的 default.rb 中使用 remote_directory 我观察到的是,只要目录中有太多文件/层次结构,上传就会失败,并出现以下异常:-

ERROR: SSL Validation failure connecting to host: xyz.com - SSL_write: cert already in hash table
ERROR: Could not establish a secure connection to the server.
Use `knife ssl check` to troubleshoot your SSL configuration.
If your Chef Server uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates. 
Original Exception: OpenSSL::SSL::SSLError: SSL_write: cert already in hash table 

如前所述,与服务器的连接不是问题,它仅在文件太多/层次结构更多时才会发生。 你能建议我能做什么吗?我曾尝试在网上搜索解决方案,但未能找到解决方案

我已经检查了here 的问题,但它并没有解决我的问题 Chef 使用嵌入式 ruby​​ 和 openssl 供不与 Chef 合作的人使用

关于tensibai建议的一些更新, 自从添加 --concurrency 1 选项后,例外情况发生了变化, 最初我收到了, INFO: HTTP Request Returned 403 Forbidden:ERROR: Failed to upload filepath\file (7a81e65b51f0d514ec645da49de6417d) to example.com:443/bookshelf/… 3088476d373416dfbaf187590b5d5687210a75&Expires=1435139052&Signature=SP/70MZP4C2U‌​dUd9%2B5Ct1jEV1EQ%3D : 403 "Forbidden" <?xml version="1.0" encoding="UTF-8"?><Error><Code>AccessDenied</Code><Message>Access Denied</Message>

然后昨天它变成了 INFO: HTTP Request Returned 413 Request Entity Too Large: error ERROR: Request Entity Too Large Response: JSON must be no more than 1000000 bytes.

我应该减少文件数量还是有其他选择?

Knife --version 导致 Chef: 12.3.0

【问题讨论】:

  • 您是否按照建议尝试了knife ssl check/knife ssl fetch
  • 是的,我已经做到了,如帖子中所说,连接已建立,但在更多层次目录结构或许多文件上失败,相同的输出是:- 连接到主机 xyz:443 成功来自“xyz.com”的经过验证的证书
  • 您可以尝试使用选项--concurrency 1(默认为10)吗?我怀疑上传文件的许多线程之间存在竞争条件。我认为有一个关于它的错误已修复。如果它适用于 1,请尝试增加直到再次出错。
  • 您好,我尝试将并发设置为 1,它花费了太长时间,但返回了这个:INFO:HTTP 请求返回 403 禁止:错误:Chef::Exceptions::ContentLengthMismatch:响应正文长度 0 与 HTTP 不匹配Content-Length 标头 206。将尝试再次点击,尝试使用 5 和 2 两次再次获得证书错误
  • 我现在再次绑其给予异常以下: - INFO:HTTP请求返回403禁止:错误:无法上传文件路径\文件(7a81e65b51f0d514ec645da49de6417d)至example.com:443/bookshelf/… 3088476d373416dfbaf187590b5d5687210a75&过期= 1435139052&签名= SP / 70MZP4C2UdUd9% 2B5Ct1jEV1EQ%3D : 403 "Forbidden" AccessDeniedAccess Deniedg2gCZAATYm9va3NoZWxmQDEyNy4wLjAuMWgDYgAABZtiAAIfLWIAAHNh

标签: ruby chef-infra x509certificate embedded-ruby


【解决方案1】:

我应该减少文件数量还是有其他选择?

通常情况下,食谱中的文件不会太大或太多,如果您有很多文件要分发,则表明您应该改变分发这些文件的方式。

一种选择可能是制作一个 tarball,但这会增加管理已删除文件的难度。

如果您在内部厨师服务器上,另一种选择是遵循建议 here 并更改 nginx 的 client_max_body_size 2M; 值,但我不能保证它会起作用。

【讨论】:

  • 谢谢,我会试试看,就创建 tarball 而言,如果有细微的变化,我无法从同一本食谱单独更新文件,必须再次创建 tarball 等。
  • @Raul 这就是持续集成 (CI) 到位的地方,在更改时从文件构建工件,并将新工件部署到服务器(例如使用 jenkins 和 repo,如 nexus 或 artifactory)
  • 我在 http 部分更改了 client_max_body_size 2M; 并重新启动了 nginx 服务,但它没有帮助,因为你已经说过你不能保证它会起作用我会继续减少目录的大小,谢谢建议。
【解决方案2】:

我遇到了同样的错误,我在 Chef 服务器上运行了 chef-server-ctl reconfigure,然后尝试再次上传食谱,一切又开始正常工作

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2011-10-13
    • 2013-12-31
    相关资源
    最近更新 更多