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

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

2

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .