꼭두각시 인증서를 미리 서명하려면 어떻게해야합니까?


26

꼭두각시 에는 관리중인 클라이언트 (puppet)와 서버 (puppetmaster) 사이에 인증서가 필요합니다. 클라이언트에서 수동으로 실행 한 다음 서버로 이동하여 인증서에 서명 할 수 있지만 클러스터 / 클라우드 머신에 대해이 프로세스를 어떻게 자동화합니까?


1
한 가지 경우에 문제는 호스트 이름을 재사용 할 때입니다. 자동 서명은 해결되지 않습니다. 이 같은 문제가 있습니다.
Joel K

답변:


28

서버 (puppetmaster)에서 다음을 실행하십시오.

puppetca --generate <NAME>

그런 다음 서버에서 클라이언트로 다음을 복사하십시오.

/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem

<NAME>호스트 이름 이외의 것으로 서명 하려면 다음을 사용하십시오.

puppetd --fqdn=<NAME>

데몬을 실행하는 경우 /etc/puppet/puppet.conf에 추가하십시오.

[puppetd]
certname=<NAME>

정말 유용합니다. 감사합니다. 나는 그 자신에 대해 수수께끼를 지었다.
Jon Topper

1
새로운 명령은 puppet cert --generate <NAME>참조 serverfault.com/a/457364/71452
c33s

6

호스트 데이터베이스가있는 경우 자동 서명 기능을 사용할 수 있습니다. 당신의에서 puppet.conf파일의에서 [puppetmasterd], 추가 :

autosign = /path/to/autosign.conf

그런 다음 crontab을 사용하여이 파일을 생성하십시오. 자동 서명 파일은 꼭두각시 마스터에 처음 연결할 때 자동 서명 할 호스트 목록입니다. LDAP를 사용하여 퍼펫 호스트를 구성하므로 cron은 다음과 같습니다.

* * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf

iClassify를 사용하는 사람들이 동일한 작업을 수행하기 위해 쿼리를 작성할 수 있다고 확신합니다.

물론 네트워크를 신뢰해야합니다. 나는 이것을 EC2에서 사용합니다. 내 puppetmaster 서버는 신뢰할 수있는 다른 그룹의 연결 만 허용하는 그룹에 있습니다. 귀하의 puppetmaster가 인터넷에 연결되어 있으면이 작업을 수행하지 않는 것이 좋습니다.


6

간단한 답변 : 새로운 요청에 자동으로 서명합니다. 이것은 물론 꼭두각시 마스터에 연결된 시스템을 맹목적으로 신뢰하기 때문에 위험합니다. 이는 수동 서명이 필요한 목적입니다.

[puppetmasterd]
autosign = true

서명 할 키를 결정하는 데 사용할 false 및 파일을 지정할 수 있습니다.

꼭두각시 위키 의 구성 참조참조 하십시오 .

또 다른 옵션은 Capistrano 와 같은 도구를 사용하는 것입니다 . 여기서 puppetmaster 노드를 지정하고 클라이언트 인스턴스 노드를 작성하고 다음 작업을 수행하십시오.

  • EC2의 API with Ruby로 인스턴스 노드를 만듭니다.
  • 서버에서 연결하여 인스턴스에서 puppetd를 실행하십시오.
  • puppetca --sign을 실행하여 인스턴스 요청에 대해 서명합니다 (위의 생성 비트에 지정된 인스턴스 이름을 알고 있으므로).
  • 인스턴스에서 puppetd를 다시 실행하십시오. 이번에는 인증서가 서명되어 성공적으로 연결됩니다.

참고 : Puppet 2.6 이상을 사용하는 경우 [puppetmasterd]섹션 제목은 이제입니다 [master]. 자세한 내용은 docs.puppetlabs.com/guides/tools.html 을 참조하십시오.
MrLore

4

서버 (puppetmaster)에서 다음을 실행하십시오.

puppetca --generate <NAME>

그런 다음 서버에서 클라이언트로 다음을 복사하십시오.

/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem

호스트 이름 이외의 다른 것을 사용하려면 다음을 사용하십시오.

puppetd --fqdn=<NAME>

데몬을 실행하는 경우 /etc/puppet/puppet.conf에 추가하십시오.

[puppetd]
certname=<NAME>

이것은 나에게 더 복잡해 보입니다. 클라이언트에 꼭두각시를 설치하면 인증서가 생성되어 서명을 위해 마스터로 보냅니다. 마스터에서 서명하면 클라이언트는 다음에 실행될 때 작업을 시작합니다. 이것은 더 적은 단계를 포함합니다. 이 단계조차도 실제로 저장하려면 다음과 같은 작업을 수행하는 cron 작업을 실행할 수 있습니다. 꼭두각시를하십시오 --sign $ host; 완료
David Pashley

1
하나 또는 두 대의 컴퓨터가 있으면 괜찮지 만 클라우드에서 컴퓨터를 시작 및 중지 할 때 수동으로 수행하지 않으려는 경우 기본 컴퓨터를 시작하고 스크립트를 실행하여 모든 것을 설정합니다. 꼭두각시 마스터에 로그인 할 필요없이 꼭두각시를 통해
Ranguard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.