내 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

이 오류를 피하는 방법? certdnsname을 올바르게 정의하는 방법? 이것에 관한 다른 문서를 찾았지만 간단한 예는 없습니다. ii 분리에 ","를 사용하면 전혀 서명 할 수 없습니다. 나는 또한 같은 구문을 보았다

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

그러나 "puppet :"을 추가 할 때와 그렇지 않을 때는 명확하지 않습니다.

답변:


25

이 답변을 우연히 발견 한 다른 사람의 이익을 위해 :

CVE-2011-3872 로 인해 Puppet은 더 이상 certdnsnames옵션을 지원하지 않습니다 . 설명서에서 :

CVE-2011-3872 이후 certdnsnames 설정이 더 이상 작동하지 않습니다. 우리는 그 가치를 완전히 무시합니다. 자체 인증서 요청의 경우 구성에서 dns_alt_names를 설정할 수 있으며 로컬로 적용됩니다. 다른 노드 인증서에 대해 DNS 대체 이름 또는 다른 subjectAltName 값을 설정하는 구성 옵션이 없습니다. 또는 --dns_alt_names 명령 줄 옵션을 사용하여 고유 한 CSR을 생성하는 동안 추가 된 레이블을 설정할 수 있습니다.

다음과 같이 subjectAlternativeName을 사용하여 서버에 대한 SSL 인증서를 생성 할 수 있습니다.

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

3
추가 참고 : 꼭두각시 인증서 생성을 실행하기 전에 / var / lib / puppet / ssl / private_keys, / var / lib / puppet / ssl / ca / ​​signed / 및 / var / lib / puppet에서 퍼펫 마스터의 .pem 파일을 제거하십시오. / ssl / certs. 새 인증서를 생성해도 기존 클라이언트와의 연결이 끊어지지 않습니다. 처음 연결시 다운로드 한 CA 인증서를 사용하여 puppetmaster의 인증서를 확인하기 때문입니다.
Erik Forsberg 2018 년

9
안녕하세요, Lars에게 감사드립니다. 당신은 내 질문에 대답했습니다.
Larsks

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

꼭두각시 서버 인증서에 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.