我正在设置一个可以通过HTTPS访问的web服务,它使用内部CA。我希望Ansible验证证书,因此我需要让它信任这个CA。我在macOS和CentOS上都运行Ansible,因此我需要让它在这两种类型的操作系统上都信任我的自定义CA。
我曾尝试将我的CA证书放入/etc/ssl/certs/
中,并使用blockinfile
将其添加到/usr/local/etc/openssl/cert.pem
中,但这些都不起作用。我更喜欢一种易于清理的方式,比如将CA文件添加到目录中,而不是将其附加到文件中。
我正在运行Ansible 2.8,并且已经发现它使用urllib
来发出HTTP请求。但我找不到任何关于它在不同操作系统上查找CA证书的信息。
有什么想法吗?谢谢
Centos的部分答案(其他发行版使用不同的路径/二进制文件,我不知道如何在macintosh上管理它(。
- 将扩展名为
.pem
的CA证书文件添加到/etc/pki/ca-trust/source/anchors/
文件夹 - 以root用户身份运行命令
update-ca-certificates
证书现在应该由ansible(以及所有其他使用openssl的环境/软件,如curl(识别
如果您仍然收到验证错误,您可以检查openssl 使用的默认路径是什么
openssl version -a | grep -i openssldir
在这个目录中,应该有一个指向/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
的符号链接cert.pem
(即update-ca-certificates
更新的CA Bundle文件(。如果这是丢失的,尝试创建它。
通常有不少于3个环境变量需要设置自定义CA的路径https://github.com/tox-dev/tox/pull/1439他们的确切名字。还要确保在运行http请求的机器上设置了它们!!