マスター上の私の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を正しく定義する方法これについて別のドキュメントを見つけましたが、簡単な例はありません。 "、"を使用して分離することはできません。私はまた、次のような構文を見ました
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
しかし、私にとっては、「パペット:」をいつ追加するか、いつ追加しないかは明確ではありません。
この答えに出くわした誰かのために:
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>
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
certdnsnames
はコロンで区切られたリストです。SANエントリをPuppetサーバー証明書に追加するには、次のコマンドを使用します。
_systemctl stop puppetserver
puppetserver ca setup --subject-alt-names $(hostname -f),puppet
systemctl start puppetserver
_
rm -rf $(puppet master --configprint ssldir)
を使用して既存の証明書をクリアする必要がある場合もあります
による
puppet agent --genconfig
コロンで区切られた( ";"ではなく ":")リストを使用する必要があります。
だからそれは
certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'
HTH