Я хочу сделать тесты https, используя libcurl и openssl в C++. У меня есть следующий код:Ошибка сертификата сервера. CAfile: ca.pem CRLfile: none
curl_easy_setopt(mEasyHandle, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(mEasyHandle, CURLOPT_SSL_VERIFYHOST, 2L);
result = curl_easy_setopt(mEasyHandle, CURLOPT_CAINFO , "ca.pem");
У меня есть сервер Windows, который прослушивает 192.168.0.101:4443
. При запуске программы из Visual Studio проверка сертификата работает, но в Linux я получаю сообщение об ошибке server certificate verification failed. CAfile: ca.pem CRLfile: none
.
В ca.pem
Я разместил контент, сгенерированный в сертификате сервера (тестирование на Windows работает, на Linux нет).
* Trying 192.168.0.101...
* Connected to 192.168.0.101 (192.168.0.101) port 4443 (#0)
* found 1 certificates in ca.pem
* server certificate verification failed. CAfile: ca.pem CRLfile: none
* Closing connection 0
UPDATE:
У меня есть папка /etc/ssl/certs
, которая содержит много ча CERTS файлов. Я скопировал ca.pem
чтобы /etc/ssl/certs
и запустить update-ca-certificates
который произвел выход:
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d....done.
Вы уверены, что это порт '4443', а не' 443' (который является портом HTTPS по умолчанию)? –
У меня есть пользовательский сервер, который прослушивает порт 4443. –
Попробуйте этот http://askubuntu.com/questions/570888/download-01-org-certificate-verification-failed-crlfile-missing. Очевидно, заменяя 'download.01.org' удаленным именем хоста. – marekful