2017-07-06 120 views
0

我嘗試使用下面的鏈接,創建與中央證書頒發機構的多個木偶主服務器:
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

回答

0

似乎它只能用於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 
    
相關問題