Я пытаюсь подключиться к серверу с помощью проверки сертификата 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);
EDIT ***
Мне был предоставлен файл pfx, и я сделал следующее:
для экспорта закрытого ключа: openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
для экспорта сертификата: openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
чтобы удалить кодовую фразу из закрытого ключа: openssl rsa - в key.pem -out server.key
Затем я помещаю каждый из этих файлов в каталог, который ожидает httpd.conf. доступ к серверу теперь работает нормально через https://.
Я сделал yum install ca-certifcates и получил:
Package ca-certificates-2019.2.32-76.el7_7.noarch already installed and latest version
Я не знаю, что еще делать дальше. появляется та же ошибка, что и выше.