集中的证书颁发机构4
问题描述:
我尝试使用下面的链接,创建与*证书颁发机构的多个木偶主服务器:
https://docs.puppet.com/puppet/3/scaling_multiple_masters.html#option-1-direct-agent-nodes-to-the-ca-master
但是这个文档是根据傀儡第3版,并与傀儡4有一个运行在JVM和码头服务请求的puppet服务器。正如在上面的文档中,apache将所有证书URI转发给*服务器,我如何使用puppet 4创建相同的体系结构。集中的证书颁发机构4
答
似乎它只能用于Enterprise Puppet。 我认为,与开放源代码相比,您可以继续使用Apache/Nginx和代理请求到CA或在所有代理puppet.conf上配置webserver.conf和用户ca_server。我不确定CRL撤销可以做什么。 傀儡3.8我们用下面的方案,我认为这应该与新的puppetserver工作(这有点疯狂,虽然):
当CA被清洗的人证明我们的inotify赶上 事件与incron守护进程。
-
incron运行卷曲用GET请求所有木偶大师
pwgen -1 > /tmp/crl curl --data-binary '@/tmp/crl' http://puppetmaster:8887/crl
-
在nginx的配置上主,我们有以下几点:
server { listen 8887; server_name puppetmaster.net; root /var/www; location /crl { limit_except POST { deny all; } client_body_temp_path /srv/puppet/crl/; client_body_in_file_only on; client_body_buffer_size 128K; client_max_body_size 128K; proxy_pass_request_headers on; proxy_set_header X-FILE $request_body_file; proxy_set_body off; proxy_redirect off; proxy_pass http://localhost:8888; } } server { listen localhost:8888; server_name localhost; root /var/www; }
-
所以我们节省要求在文件中,有master上的另一个incron守护进程可以捕获这个请求并运行另一个请求到CA并通过CA API (请参阅puppet doc)下载CRL。重新加载httpd之后。我们做如下:
#!/bin/bash PID='/tmp/crlpid' if [[ -f $PID ]]; then exit else touch $PID fi function check { rm -f /srv/puppet/crl/* sleep 10 COUNT=$(ls -1 /srv/puppet/crl | wc -l) if [[ $COUNT > 0 ]]; then check else return 0 fi } if check; then STATUS='NOTSET' SSLDIR=`puppet config print ssldir` CERTNAME=`hostname -f` ENV=`puppet config print environment` URL="https://puppetca:8140/${ENV}/certificate_revocation_list/ca" CRT=`puppet config print cacert` CRL=`puppet config print cacrl` TMPCRL="/tmp/puppet_ca_crlpem.tmp" curl --output "${TMPCRL}" \ --cacert "${SSLDIR}/certs/ca.pem" \ --cert "${SSLDIR}/certs/${CERTNAME}.pem" \ --key "${SSLDIR}/private_keys/${CERTNAME}.pem" \ -H "Accept: s" "${URL}" openssl crl -text -in "${TMPCRL}" -CAfile "${CRT}" -noout > /dev/null 2>&1 && STATUS='VALID' if [[ "${STATUS}" == "VALID" ]]; then mv -f "${TMPCRL}" "${CRL}" chown puppet:puppet "${CRL}" systemctl reload httpd.service fi rm -f $PID fi