我正在尝试使用ssl证书验证连接到服务器。在我的本地计算机上,我以冗长的方式运行curl并且得到:
* Trying X.X.X.X...
* TCP_NODELAY set
* Connected to server.com (X.X.X.X) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: ./XXX.pem
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
......<<connects correctly and does it's thing>>......
在另一个Linux机器上,我执行完全相同的脚本并得到:
* About to connect() to server.com port 443 (#0)
* Trying X.X.X.X...
* Connected to server.com (X.X.X.X) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* Closing connection 0
<< Curl error: 77 >>
我在两台计算机上都使用完全相同的证书。我尝试了十亿种不同的方法,无法解决。
我需要在发生故障的计算机上做什么才能使其正确连接?您还需要什么其他信息来帮助我。我在这个方面还很遥远...我不知道它是否在机器上的本地证书导致了错误....
这是我正在使用的脚本:
$path = "./someFile.pem";
$keyFile = "./someFile.key";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLCERT, $path);
curl_setopt($ch, CURLOPT_SSLKEY, $keyFile);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD , $pass);
curl_setopt($ch, CURLOPT_CAPATH, $path);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CERTINFO, true);
$response = curl_exec($ch);
编辑***
我得到了一个pfx文件,并且执行了以下操作:
导出私钥:openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
导出证书:openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
删除私钥中的密码:openssl rsa -in key.pem -out server.key
然后,将每个这些文件放入httpd.conf期望的目录中。现在可以通过https://正常访问服务器。
我做了yum安装ca-certifcates并得到:
Package ca-certificates-2019.2.32-76.el7_7.noarch already installed and latest version
我不知道接下来要做什么。出现与上述相同的错误。