Получение сертификата и создание сертификата
Быстрый вопрос
Я подписываю сертификат для 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-адресом с той же конфигурацией]