【问题标题】:Puppet External Certificate: Master Is Not A CAPuppet 外部证书:Master 不是 CA
【发布时间】:2014-12-15 07:28:12
【问题描述】:

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

该集合包括以下内容:

  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 Passenger。上面这两个证书已放置在它们各自的文件夹中(/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>    

#杂项 LoadModule 乘客模块 /var/lib/gems/1.8/gems/passenger-4.0.53/xxx.so 乘客根 /var/lib/gems/1.8/gems/passenger-4.0.53 乘客Ruby /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 东西。 webrick puppetmaster 服务已关闭,因为 apache2 服务已开启。

执行代理时,显示错误 400,子消息 Master is not a CA.

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

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

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

任何人都可以帮助启发这个问题吗?非常感谢!

M

【问题讨论】:

    标签: apache ssl puppet


    【解决方案1】:

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

    SSL Configuration: External CA Support 文档中详细介绍了使用外部 CA。但是,它包含以下警告,这与您的要求不兼容,“我仍然打算让 puppetmaster 颁发证书,但是通过与 master 颁发证书的正常方式相同的方式向其他代理颁发两个证书并自动签名它们。”

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

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

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

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

    如果您将签名的代理证书放在代理系统上,或者替换默认路径或另外指定 host* configuration options,则代理不应尝试使用 Puppet Master 的(禁用的)CA 功能.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2018-08-18
      • 2023-03-12
      • 2013-09-13
      • 2014-09-08
      • 2010-09-25
      • 2012-04-10
      相关资源
      最近更新 更多