Puppet外部证书:Master不是CA.

时间:2014-10-20 10:33:19

标签: apache ssl puppet

我实际上是在尝试查看Puppet是否可以使用外部证书,因为我的组织的信息安全部门已经提供了一个更强大的安全证书,我已经向他们要求他们查看它是否有效。我仍打算获得puppetmaster颁发证书,但是这两个证书对其他代理的行为与主证书颁发证书的正常方式相同,并自动签名。

该集合包括以下内容:

  1. ABCROOTCA2015.pem - ABC Root 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证书      - 密码:###
  5. 由于外部证书需要Apache Passenger来解决这个问题,我已经安装了Apache乘客。上面的这两个证书已放入各自的文件夹(/ var / lib / puppet / ssl / certs,另一个副本,服务器证书放在/ private_keys文件夹中。

    鉴于上面的两个证书文件,这是我的配置文件,Apache端,存储在“/ etc / apache2 / sites-enabled / puppetmaster”(这是针对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>
    

    对于puppetmaster的puppet.conf。我只添加了以下附加行:

       [main]
        ca_server = puppet2-64.mimos.local
    
        [master]
        ca = false
        certname = mimosserverca2015
    

    对于要为此测试的其中一个代理,我在代理的puppet配置文件中添加了一个ca_server。随着apache2服务的开启,webrick puppetmaster服务已经关闭。

    执行代理程序时,将显示错误400,其中子消息“主服务器不是CA”。

    如果我已经在apache2文件夹中的puppetmaster文件中定义了主机和本地根证书,那么我不应该获得与通常相同的功能吗?

    或者是因为puppetmaster不会将自定义证书文件作为自己的文件,因此我们必须重命名该文件?

    到目前为止,我已经检查过了,但是没有太多要检查的材料,除非步骤可能与我的CA设置不匹配。

    有谁可以帮助启发这个问题?非常感谢!

    中号

1 个答案:

答案 0 :(得分:1)

错误Master is not a CA是由您的Puppet master上的证书颁发机构功能被禁用引起的,您可以通过在ca = false下的puppet.conf中指定[master]来明确执行此操作。

SSL Configuration: External CA Support文档详细介绍了使用外部CA.但是它包含以下警告,这与您的要求不相符,&#34;我仍打算拥有puppetmaster颁发证书,但是这两个证书与其他代理的行为方式与主发行证书的正常方式相同并自动签名。&#34;

  

这些配置是全有或全无的,而不是混合匹配。   使用外部CA时,内置的Puppet CA服务必须是   已禁用,无法用于颁发SSL证书。

     

此外,Puppet无法自动分发证书   这些配置 - 您必须拥有自己的完整系统   颁发和分发证书。

简单地说,当使用外部CA和Puppet时,您负责签署和分发证书。

(虽然您可以尝试删除ca = false,但您很可能遇到问题,因为它是不受支持的配置。)

如果您在代理系统上放置了已签名的代理证书,要么替换默认路径,要么另外指定host* configuration options,则代理不应尝试使用(已禁用) Puppet master的CA函数。