puppetmasterに複数のDNS名を追加する方法は?


16

マスター上の私のpuppet.conf

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;

定義されたcertdnsnamesの私の理解のために、以下が動作するはずです:

puppet agent --server myname.dyndns.org --test

しかし、私は次のエラーが表示されます:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate

このエラーを回避する方法は?certdnsnamesを正しく定義する方法は?これに関するさまざまなドキュメントを見つけましたが、簡単な例はありません。ii分離に「、」を使用iまったく署名できません。私も次のような構文を見てきました

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr

http://projects.puppetlabs.com/issues/5776

しかし私にとっては、「パペット:」を追加するタイミングと追加しないタイミングは明確ではありません。

回答:


25

この答えにつまずく他の誰かのために:

CVE-2011-3872により、Puppetはこのcertdnsnamesオプションをサポートしなくなりました。ドキュメントから:

CVE-2011-3872以降、certdnsnames設定は機能しなくなりました。値を完全に無視します。独自の証明書要求の場合、構成にdns_alt_namesを設定でき、ローカルに適用されます。別のノード証明書にDNS alt名または他のsubjectAltName値を設定する構成オプションはありません。または、-dns_alt_namesコマンドラインオプションを使用して、独自のCSRの生成中に追加されたラベルを設定できます。

次のようにsubjectAlternativeNameを使用して、サーバーのSSL証明書を生成できます。

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>

3
追加の注意:puppet cert generateを実行する前に、/ var / lib / puppet / ssl / private_keys、/ var / lib / puppet / ssl / ca /​​ signed /および/ var / lib / puppetにあるpuppetマスターの.pemファイルを削除します/ ssl / certs。新しい証明書を生成しても、既存のクライアントは最初の接続時にダウンロードしたCAの証明書を使用してpuppetmasterの証明書を検証するため、既存のクライアントへの接続を殺すことはありません。
エリックフォースバーグ

9
こんにちは、過去のラースに感謝します。あなたは私の質問に答えました。
ラースク

2

Puppet 4+の場合、次のコマンドを使用して、puppetserver証明書の受け入れられたDNS名を変更します。

既存の証明書の名前を* .backupに変更します。

mv /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/ca/signed/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem{,.backup}

新しい証明書を生成します(目的の代替名を追加します):

puppet cert generate $(hostname -f) --dns_alt_names=$(hostname -f),puppet

puppetserverを再起動して新しい証明書を使用する

service puppetserver restart

1
  • まず、certdnsnamesコロンで区切られたリストです。
  • 次に、証明書が署名されたときに含まれていなかったホスト名を使用してエージェントがマスターに接続しているため、このエラーが発生します:http : //docs.puppetlabs.com/guides/troubleshooting.html

他の答えは単に私の右の文字を示すことによって私を助けた:)しかし、あなたの答えをありがとうございましたので、申し訳ありませんが、この答えを受け入れていないため、私は「コロン」と翻訳の問題を抱えていた
c33s

0

による

puppet agent --genconfig

コロンで区切られた(「;」ではなく「:」)リストを使用する必要があります。

だからそれは

certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'

HTH


0

puppetサーバー証明書にSANエントリを追加するには、次を使用します。

systemctl stop puppetserver
puppetserver ca setup --subject-alt-names $(hostname -f),puppet
systemctl start puppetserver

rm -rf $(puppet master --configprint ssldir)同様に経由して既存の証明書をクリアする必要があるかもしれません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.