Получение сертификата и создание сертификата

Быстрый вопрос

Я подписываю сертификат для PKILabServer.com (в списке под общим именем),

открыть /etc/hosts и добавьте следующую запись 127.0.0.1 PKILabServer.com

Затем запустите сервер с помощью команды % openssl s_server –cert server.pem -www

Я указываю браузеру https://pkilabserver.com:4433/, а затем он показывает " Неверный сертификат безопасности... ", а затем я загружаю свой файл сертификата ca.crt и сайт загружается отлично.

Вопрос в том, что, поскольку PKILabServer.com указывает на localhost, если вместо этого мы используем https://localhost:4433/, мы будем подключаться к тому же веб-серверу.

Но когда я указываю браузеру localhost:4433 Я получаю сообщение об ошибке: "Этот сертификат действителен только для pkilabserver.com...". Мне нужно объяснить причину этого в моем проекте, и на это я и ответил. Пожалуйста, поправьте меня, если я ошибаюсь.

Это связано с тем, что сгенерированный запрос на подпись сертификата был подписан исключительно для PKILabServer.com (как это было указано в разделе "Общее имя"), поскольку в файле /etc/hosts содержатся записи для многих других веб-сайтов, которые перечислены в списке localhost, поэтому указывается браузер для localhost:4433 будет использовать веб-сайт, указанный в файле /etc/hosts, и поскольку веб-сайты не совпадают, мы получаем сообщение об ошибке "Сертификат действителен только для PKILabServer.com"

1 ответ

Решение

Я думаю, что вы путаете роль IP-адреса и имени домена с HTTPS-соединениями.

Сертификат (в контексте HTTPS) не знает IP-адресов и заботится еще меньше - все, о чем он заботится, - это доменные имена, с которыми он связан - и они жестко закодированы в сертификат.

Когда ваше HTTPS-соединение устанавливается, имя домена передается с использованием заголовка ("host: xxxx") - и сертификат проверяется на соответствие этому, независимо от того, в каком интерфейсе он подключен.

Следовательно, когда вы переходите на localhost:XXX, сертификат не совпадает, потому что localhost нет в строке hosts заголовка, и он выдает ошибку. Аналогично, отображение 127.0.0.1 на имя домена и использование имени домена работает нормально.

[Для полноты картины отмечу, что я предполагаю, что Virtualhost может связываться с любым IP-адресом с той же конфигурацией]

Другие вопросы по тегам