php ошибка подключения curl с сертификатом ssl - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь подключиться к серверу с помощью проверки сертификата 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

Я не знаю, что еще делать дальше. появляется та же ошибка, что и выше.

...