У меня есть сервер с самоподписанным сертификатом, к которому я пытаюсь получить безопасный доступ. Я получил сертификат, посмотрев на вывод из openssl s_client -connect <ip>
, и скопировал его в testcert.pem, который затем попытался использовать с curl --cacert testcert.pem <url>
. Однако это не сработало, и мои исследования привели меня к мысли, что проблема может заключаться в строке в сертификате, которая гласит Subject: CN=id23946
.
Очевидно, мне нужно где-то в моей системе сохранить псевдоним, связывающий id23946 с IP-адресом, но я не могу найти никакой информации о том, как это сделать. Итак, как мне это сделать? Как мне заставить curl проверять этот сертификат как действительный?
Изменить: я знаю, что могу подключиться к серверу, добавив <ip> id23946
в мой файл hosts, а затем используя id23946 в качестве адреса, но я бы действительно предпочел иметь возможность подключаться напрямую к фактическому адресу сервера, без необходимости изменять сертификат сервера. Есть ли способ сделать это?
К сожалению, нет способа делать то, что вы хотите, кроме получения новый сертификат, содержащий например Расширения альтернативного имени субъекта (SAN) для других имен DNS / IP-адресов, по которым ваш клиент TLS будет связываться с этим сервером.
Причина в том, что этот "псевдоним" должен быть заслуживающий доверия с помощью процесса проверки X509, и единственное, что обеспечивает надежную привязку информации, включая псевдонимы, такие как «этот объект / сертификат также связан с DNS-именем site.example.com
и IP-адрес 1.2.3.4 "- иметь эти псевдонимы / ассоциации содержится в самом сертификате. Процесс проверки доверяет подписывающему сертификату, и, следовательно, подпись выдающего сертификата должна включать все об этой теме, включая псевдонимы. Все, что выдавший сертификат утверждает, что он действителен, содержится в самом сертификате.
Другой способ подумать об этом: «если он не подписан сертификатом, выдавшим его, то ему нельзя доверять».