如何修复以下 ansible galaxy SSL 错误?
How to fix following ansible galaxy SSL error?
开始学习 Ansible 并希望简化 ansible-galaxy search nginx
命令,但我得到:
ERROR! Unknown error when attempting to call Galaxy at 'https://galaxy.ansible.com/api/api': <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>
曾尝试使用 ansible-galaxy --ignore-certs search nginx
和 ansible-galaxy -c search nginx
但现在得到 ansible-galaxy: error: unrecognized arguments: --ignore-certs
的展位。
OS :
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
Ansible 版本:
ansible 2.9.5
config file = /home/maciej/projects/priv/ansible_nauka/packt_course/ansible.cfg
configured module search path = ['/home/maciej/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/maciej/.local/lib/python3.6/site-packages/ansible
executable location = /home/maciej/.local/bin/ansible
python version = 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0]
为我工作:
ansible-galaxy search --ignore-certs postgresql
我有同样的问题,但是在 Mac OS X.
根本问题是您的 Python 环境没有 finding/making 使用安装在 OS 上的默认根证书。需要这些根证书才能(通过 TLS)与 Ansible Galaxy 安全连接。
For Mac OS X 我能够根据这个答案解决这个问题:
即通过 运行 安装证书的脚本,随安装一起提供:
cd /Applications/Python\ 3.7/
./Install\ Certificates.command
对于 Ubuntu / Debian:
更新:正如 Maciej 在接受的答案中指出的那样,可以重新生成证书并将其添加到环境中:
sudo update-ca-certificates --fresh
export SSL_CERT_DIR=/etc/ssl/certs
P.S.:我不建议使用--ignore-certs
,这会跳过TLS连接中的证书验证,使连接不安全(允许 Man-in-the-middle attacks)
回到这个问题...生活是最好的动力。对我有帮助的是:
sudo update-ca-certificates --fresh
export SSL_CERT_DIR=/etc/ssl/certs
对于RHEL/CENTOS
您可能需要检查加密政策,如果政策设置为未来暂时将其设置为默认值
sudo update-crypto-policies --set=DEFAULT
开始学习 Ansible 并希望简化 ansible-galaxy search nginx
命令,但我得到:
ERROR! Unknown error when attempting to call Galaxy at 'https://galaxy.ansible.com/api/api': <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>
曾尝试使用 ansible-galaxy --ignore-certs search nginx
和 ansible-galaxy -c search nginx
但现在得到 ansible-galaxy: error: unrecognized arguments: --ignore-certs
的展位。
OS :
Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic
Ansible 版本:
ansible 2.9.5
config file = /home/maciej/projects/priv/ansible_nauka/packt_course/ansible.cfg
configured module search path = ['/home/maciej/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/maciej/.local/lib/python3.6/site-packages/ansible
executable location = /home/maciej/.local/bin/ansible
python version = 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0]
为我工作:
ansible-galaxy search --ignore-certs postgresql
我有同样的问题,但是在 Mac OS X.
根本问题是您的 Python 环境没有 finding/making 使用安装在 OS 上的默认根证书。需要这些根证书才能(通过 TLS)与 Ansible Galaxy 安全连接。
For Mac OS X 我能够根据这个答案解决这个问题:
即通过 运行 安装证书的脚本,随安装一起提供:
cd /Applications/Python\ 3.7/
./Install\ Certificates.command
对于 Ubuntu / Debian:
更新:正如 Maciej 在接受的答案中指出的那样,可以重新生成证书并将其添加到环境中:
sudo update-ca-certificates --fresh
export SSL_CERT_DIR=/etc/ssl/certs
P.S.:我不建议使用--ignore-certs
,这会跳过TLS连接中的证书验证,使连接不安全(允许 Man-in-the-middle attacks)
回到这个问题...生活是最好的动力。对我有帮助的是:
sudo update-ca-certificates --fresh
export SSL_CERT_DIR=/etc/ssl/certs
对于RHEL/CENTOS
您可能需要检查加密政策,如果政策设置为未来暂时将其设置为默认值
sudo update-crypto-policies --set=DEFAULT