集中的证书颁发机构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工作(这有点疯狂,虽然):

  1. 当CA被清洗的人证明我们的inotify赶上 事件与incron守护进程。

  2. incron运行卷曲用GET请求所有木偶大师

    pwgen -1 > /tmp/crl 
    curl --data-binary '@/tmp/crl' http://puppetmaster:8887/crl 
    
  3. 在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; 
    } 
    
  4. 所以我们节省要求在文件中,有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