我正在尝试通过 https 访问 Web 服务 - 这是同一家公司但不是同一数据中心的站点。如果我运行:
curl --verbose -d '{"client_secret":"123abc", "client_id":"someervice"}' -H 'Content-Type: application/json' https://api.anotherdomain.com/token
我得到:
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
通过使用:
# openssl s_client -showcerts -connect api.anotherdomain.com:443
我看到他们有一个自签名证书。我可以采取哪些步骤来确保我的服务器可以访问它?我想我需要添加他们的 PEM 格式的自签名证书update-ca-trust
。我需要 PEM 文件的哪些部分才能正常工作?
答案1
下载证书:
openssl s_client -服务器名称 api.anotherdomain.com -connect api.anotherdomain.com:443 > foo.crt
如果你使用 CentOS:
yum 安装 ca 证书
更新 CA 信任强制启用
cp foo.crt /etc/pki/ca-trust/source/anchors/
更新 CA 信任提取
如果你使用 Debian:
sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
sudo 更新 ca 证书