Я новичок в мире CURL, пришедший из домена Windows + .NET.
Попытка получить доступ к Rest API для базовой аутентификации по адресу http://www.evercam.io/docs/api/v1/authentication .
curl -X GET https://api.evercam.io/v1/... \
-u {username}
Не знаю, как использовать эту команду в командной строке Windows после успешной настройки CURL. Тестировал CURL следующим образом:
C:\>curl --version
curl 7.33.0 (x86_64-pc-win32) libcurl/7.33.0 OpenSSL/0.9.8y zlib/1.2.8 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp s
ftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate Largefile NTLM SSL SSPI libz
Теперь я заканчиваю этим
C:\>curl -u myuser:mypassword -X GET https://api.evercam.io/v1/
curl: (51) SSL: no alternative certificate subject name matches target host name 'api.evercam.io'
Как я могу исправить эту ошибку SSL проблема 51?
*.my-domain.com
которому не относилосьdev.subdomain.my-domain.com
. Но отлично работает дляdev-subdomain.my-domain.com
. Итак, чтобы заставить работать несколько поддоменов, возможно, вам понадобится то, о чем говорится в этой статье - sslshopper.com/…Примечание редактора: это очень опасный подход, если вы используете достаточно старую версию PHP для его использования. Он открывает ваш код для атак типа «злоумышленник в середине» и устраняет одну из основных целей зашифрованного соединения. Возможность делать это удалена из современных версий PHP, потому что это очень опасно. Единственная причина, по которой за него проголосовали 70 раз, заключается в том, что люди ленивы. НЕ ДЕЛАЙТЕ ЭТОГО.
Я знаю, что это (очень) старый вопрос, и он касается командной строки, но когда я поискал в Google по запросу «SSL: ни одно альтернативное имя субъекта сертификата не соответствует имени целевого хоста», это был первый ответ.
Мне потребовалось немало времени, чтобы найти ответ, так что надеюсь, что это сэкономит кому-то много времени! В PHP добавьте это в свои настройки cUrl:
ps: это должно быть временное решение. Поскольку это ошибка сертификата, лучше, конечно, исправить сертификат!
источник
CURLOPT_SSL_VERIFYHOST
в моем случаеОбщее имя в сертификате
api.evercam.io
предназначено для,*.herokuapp.com
и в сертификате нет альтернативных имен субъектов. Это означает, что сертификат дляapi.evercam.io
не соответствует имени хоста, и поэтому проверка сертификата не выполняется. То же, что и дляwww.evercam.io
, например, попробуйте https://www.evercam.io в браузере, и вы получите сообщение об ошибке, что имя в сертификате не совпадает с именем хоста.Так что это проблема, которую нужно исправить с помощью evercam.io. Если вас не заботят безопасность, атаки типа «злоумышленник в середине» и т. Д., Вы можете отключить проверку сертификата (
curl --insecure
), но тогда вы должны спросить себя, почему вы вообще используете https вместо http.источник
это может сэкономить время кому-то.
Если вы используете GuzzleHttp и сталкиваетесь с этим сообщением об ошибке cURL error 60: SSL: ни одно альтернативное имя субъекта сертификата не соответствует имени целевого хоста, и вас устраивает `` небезопасное '' решение (не рекомендуется в производственной среде), тогда вам нужно добавить
\GuzzleHttp\RequestOptions::VERIFY => false
в клиент конфигурация:который устанавливается
CURLOPT_SSL_VERIFYHOST
в 0 иCURLOPT_SSL_VERIFYPEER
false вCurlFactory::applyHandlerOptions()
методеИз документации GuzzleHttp
источник
Как говорится в коде ошибки, «ни одно альтернативное имя субъекта сертификата не соответствует имени целевого хоста» - значит, существует проблема с сертификатом SSL.
Сертификат должен включать SAN, и будет использоваться только SAN. Некоторые браузеры игнорируют устаревшее общее имя.
RFC 2818 четко заявляет: «Если присутствует расширение subjectAltName типа dNSName, оно ДОЛЖНО использоваться в качестве идентификатора. В противном случае ДОЛЖНО использоваться (наиболее конкретное) поле Common Name в поле Subject сертификата. Хотя использование Common Имя - это существующая практика, она устарела, и сертификационным центрам рекомендуется использовать вместо этого dNSName ".
источник
Я была такая же проблема. В моем случае я использовал digitalocean и nginx.
Сначала я установил домен example.app и поддомен dev.exemple.app в digitalocean. Во-вторых, я купил два сертификата ssl от godaddy. И, наконец, я настроил два домена в nginx, чтобы использовать эти два сертификата ssl со следующим фрагментом
Моя конфигурация домена example.app
Мой dev.example.app
Когда я запускал https://dev.echantillonnage.app , я получал
Моя ошибка заключалась в двух строчках ниже
Мне пришлось изменить это на:
источник