2014-10-20 47 views
0

我實際上試圖看看Puppet是否可以使用外部證書,因爲我的組織的信息安全部門已經提出了一個更強大的安全證書,我已經要求他們檢查一組證書它的工作與否。我仍然打算讓傀儡頒發證書,但是這兩個證書給其他代理人的行爲與主頒發證書的正常方式一樣,並對其進行自動設置。木偶外部證書:主人不是CA

該組包括類似以下內容:

  1. ABCROOTCA2015.pem - ABC根CA證書2015年
  2. ABCSERVERCA2015.pem - ABC服務器CA證書2015年
  3. puppet2-64.abc.local。 P12(服務器) - 私鑰和GLPI-49.abc.local 的證書 - 密碼:###
  4. GLPI-49.abc.local.p12(代理) - 私鑰和證書10.5.137.175 - 密碼:###

由於外部證書需要Apache Passenger才能工作,所以我安裝了Apache乘客。上述兩個證書已被放置到它們各自的文件夾(/ var/lib/puppet/ssl/certs中,並且另一個服務器證書放置在/ private_keys文件夾中。

鑑於上述兩個證書文件,我的配置文件,Apache的結束,儲存在 「的/ etc/apache2的/網站啓用/戲夢人生」(這是爲Ubuntu)

<VirtualHost *:8140> 
     SSLEngine on 
     SSLProtocol -ALL +SSLv3 +TLSv1 
     SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP 

     SSLCertificateFile  /var/lib/puppet/ssl/certs/mimosserverca2015.pem 
     SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/mimosserverca2015.pem 

     #SSLCertificateChainFile /var/lib/puppet/ssl/certs/mimosrootca2015.pem 
     SSLCACertificateFile /var/lib/puppet/ssl/certs/mimosrootca2015.pem 

    # If Apache complains about invalid signatures on the CRL, you can try disabling 
     # CRL checking by commenting the next line, but this is not recommended. 
     SSLCARevocationFile  /var/lib/puppet/ssl/ca/ca_crl.pem 
     SSLVerifyClient optional 
     SSLVerifyDepth 1 
     # The `ExportCertData` option is needed for agent certificate expiration warnings 
     SSLOptions +StdEnvVars +ExportCertData 

     # This header needs to be set if using a loadbalancer or proxy 
     RequestHeader unset X-Forwarded-For 

     RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e 
     RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e 
     RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e 

     DocumentRoot /usr/share/puppet/rack/puppetmasterd/public 
     #RackBaseURI/
     <Directory /usr/share/puppet/rack/puppetmasterd> 
      Options None 
      AllowOverride None 
     # Apply the right behavior depending on Apache version. 
      Order allow,deny 
      Allow from all 
     </Directory>  

#Misc 的LoadModule passenger_module /var/lib/gems/1.8/gems/ passenger-4.0.53/xxx.so PassengerRoot /var/lib/gems/1.8/gems/passenger-4.0.53 PassengerRuby /usr/bin/ruby1.8

ErrorLog /var/log/apache2/puppetmaster_ssl_error.log 
    CustomLog /var/log/apache2/puppetmaster_ssl_access.log combined 

</VirtualHost> 

對於傀儡大師的puppet.conf。我只加了以下附加行:

[main] 
    ca_server = puppet2-64.mimos.local 

    [master] 
    ca = false 
    certname = mimosserverca2015 

這纔是代理商之一,該測試中,我代理的木偶配置文件中添加了一個ca_server事情。 webrick puppetmaster服務已關閉,因爲apache2服務已打開。

代理執行時,錯誤400顯示與子消息主不是一個CA.

如果我已經在apache2文件夾中的puppetmaster文件中定義了主機和本地root證書,是不是應該像通常那樣獲得相同的功能?

或者是因爲木偶大師不會將自定義證書文件作爲自己的文件,所以我們必須重命名該文件?

到目前爲止,我已經檢查過,但沒有太多材料需要檢查,除非有可能與我的CA設置不匹配的步驟。

任何人都可以幫助啓發這個問題?非常感謝!

中號

回答

1

錯誤Master is not a CA由認證功能在你的傀儡師造成被禁用,這你明確[master]下puppet.conf指定ca = false做。

使用外部CA在SSL Configuration: External CA Support文檔中有很好的介紹。但是,它包含以下警告,它與您的要求不符,「我仍然打算讓puppet頒發證書,但是其他代理的兩個證書的行爲與主頒發證書的正常方式相同,並對它們進行自動設置「。

這些配置是全或全無,而不是混合搭配。 使用外部CA時,內置的Puppet CA服務必須禁用 ,並且不能用於發佈SSL證書。

此外,Puppet不能自動分配這些配置中的證書 - 您必須擁有自己的完整系統,用於頒發和分發證書 。

簡而言之,當在Puppet中使用外部CA時,您負責簽署和分發證書。

(雖然你可以嘗試刪除CA =假,它很可能,你會因爲它是一個不受支持的配置遇到問題。)如果你把一個簽署代理證書的代理系統上

,要麼更換默認路徑或額外指定host*configuration options,則代理不應嘗試使用Puppet主控的(禁用的)CA功能。