木偶证书存储区

时间:2018-08-24 16:25:51

标签: ruby ssl-certificate puppet

我有一个Puppet Enterprise Master Server 2018.1.3,它应该通过https从git存储库中通过Code Manager获取代码,其中git服务器的服务器证书由第三方CA签名。

正确配置所有afaik后,我得到以下提示:

>  puppet-code deploy --dry-run
Dry-run deploying all environments.
Errors while collecting a list of environments to deploy (exit code: 1).
ERROR    -> Unable to determine current branches for Git source 'puppet' 
(/etc/puppetlabs/code-staging/environments)
Original exception:
The SSL certificate is invalid

直接执行r10k会产生类似的错误。这很有意义,因为我还没有在任何地方安装第三方CA证书。

所以我认为r10k最有可能运行运行Java的jruby(我对ruby没有任何想法),所以我将证书安装在jvm中:

keytool -import -file gitCA.cer -alias gitCA -keystore /opt/puppetlabs/server/apps/java/lib/jvm/java/jre/lib/security/cacerts -storepass changeit

但是在系统重新启动后,我仍然遇到相同的错误,所以好吧,这意味着r10k不是使用jruby而是ruby,因此我还将在操作系统中安装证书,并将证书放在/etc/pki/trust/anchors,并称为update-ca-certificates(在SLES12上)。之后,我可以使用wget访问git-Repo-URL而没有任何证书错误,因此证书已正确安装在OS中,但是即使系统重启后,我仍然会收到相同的错误r10k

在对证书存储和红宝石进行了大量的摸索之后,我发现了

export  SSL_CERT_FILE=<path_to_cert>

修复了r10k的直接调用:

> r10k deploy display --fetch                                         ---
:sources:
- :name: :puppet
 :basedir: "/etc/puppetlabs/code/environments"
 :remote: https://xxx@git.xxx/git/puppet
 :environments:
  - develop
  - master
  - production
  - puppet_test

,但是puppet-code仍无法使用相同的错误消息。但是我想,显然我现在root并且puppet-code由用户pe-puppet执行,所以我将导出命令放在/etc/profile.local文件中,因此可供所有用户。

仍然无法正常工作。即使系统重启并直接调用/opt/puppetlabs/server/data/puppetserver/r10k/时删除由用户root创建的r10k之后。

第一个问题:r10k为什么有效,而puppet-code无效?

第二个问题:该证书的正确位置在哪里?

非常感谢
迈克尔

更新:2018年8月27日

我尝试过:

sudo -H -u pe-puppet bash -c '/opt/puppetlabs/puppet/bin/r10k deploy display --fetch'

尽管我在SSL_CERT_FILE文件中设置了/etc/profile.local变量,但还是没用。

但是我通过在/etc/environment文件中设置变量来使其工作。

但是puppet code仍然无法正常工作。为什么?

1 个答案:

答案 0 :(得分:0)

所以,我让它工作了,但对解决方案不满意。

我在/etc/puppetlabs/puppetserver/logback.xml上打开了调试日志记录,确认puppet-code确实在调用r10k

2018-08-27T14:54:24.149+02:00 DEBUG [qtp462609859-78] [p.c.core] Invoking shell: 
  /opt/puppetlabs/bin/r10k deploy --config /opt/puppetlabs/server/data/code-manager/r10k.yaml --verbose warn display --format=json --fetch
2018-08-27T14:54:24.913+02:00 ERROR [qtp462609859-78] [p.c.app] Errors while collecting a list of environments to deploy (exit code: 1). 
  ERROR   -> Unable to determine current branches for Git source 'puppet' (/etc/puppetlabs/code-staging/environments)
  Original exception:
  The SSL certificate is invalid

所以我做到了又快又脏的方法:

cd /opt/puppetlabs/puppet/bin/
mv r10k r10k-bin
touch r10k
chmod +x r10k
vi r10k

#!/bin/bash
export SSL_CERT_FILE=<new_cert_path>
/opt/puppetlabs/puppet/bin/r10k-bin "$@"

现在可以正常工作了

puppet:~ # puppet-code deploy --dry-run
Dry-run deploying all environments.
Found 5 environments.

但不高兴,有更好的主意吗?