![Puppet 無法向 Foreman 發送事實 - “tlsv1 警報未知 ca”](https://rvso.com/image/658743/Puppet%20%E7%84%A1%E6%B3%95%E5%90%91%20Foreman%20%E7%99%BC%E9%80%81%E4%BA%8B%E5%AF%A6%20-%20%E2%80%9Ctlsv1%20%E8%AD%A6%E5%A0%B1%E6%9C%AA%E7%9F%A5%20ca%E2%80%9D.png)
我最近更新了卡泰洛到2.2和領班現在到1.8.1,因此在升級中的某個位置,Puppet 現在無法聯繫 Foreman:
> [root@virt5 ~]# puppet agent --test info:
> Retrieving plugin <snipped>
> err: Could not retrieve catalog from remote server: Error 400 on
> SERVER: Failed when searching for node virt5: Failed to find virt5.
> via exec: Execution of '/etc/puppet/node.rb virt5' returned 1:
> warning: Not using cache on failed catalog err: Could not retrieve
> catalog; skipping run
在我的 puppetmaster 上運行相同的命令時,我看到:
[root@foreman certs]# /etc/puppet/node.rb virt5
無法將事實傳送給 Foreman:SSL_connect 回傳=1 errno=0 狀態=SSLv3 讀取伺服器會話票證 A:tlsv1 警報未知 ca
我試圖複製/etc/pki/katello/certs/katello-default-ca.crthttpd 所使用的證書/etc/pki/ca-trust/source/anchors/然後運行update-ca-trust extract
,但這似乎沒有產生任何影響。
我確信我錯過了一些愚蠢的東西,我只是不確定那會是什麼。
答案1
我在這裡看到的一個錯誤(在文件中應該更清楚)是您認為 Katello 使用像 Foreman 一樣的 Puppet 證書,但事實並非如此。
在 Foreman/Katello 主機上運行:
capsule-certs-generate --capsule-fqdn "mycapsule.example.com"\
--certs-tar "~/mycapsule.example.com-certs.tar"
其中 mycapsule.example.com 是您的另一個 Puppet master。
解壓縮該 tarball 並將「puppet-client」憑證 RPM 複製到您的 Puppet master,然後安裝它
複製一些文件:
cp /etc/pki/katello-certs-tools/certs/*-puppet-client.crt /etc/puppet/foreman.crt
cp /etc/pki/katello-certs-tools/private/*-puppet-client.key /etc/puppet/foreman.key
cd /etc/puppet
wget https://katello.mydomain.net/pub/katello-default-ca.crt
chown puppet /etc/puppet/foreman.{crt,key} /etc/puppet/katello*
像這樣配置你的 /etc/puppet/foreman.yaml :
:url: "https://katello.mydomain.net"
:ssl_ca: "/etc/puppet/katello-default-ca.crt"
:ssl_cert: "/etc/puppet/foreman.crt"
:ssl_key: "/etc/puppet/foreman.key"
希望如此。