Назад | Перейти на главную страницу

Почему мой самозаверяющий подстановочный сертификат не работает?

Я успешно создал и использовал самозаверяющий сертификат на своей машине разработки (IIS 7.5 - Windows 7).

Для этого я создал самоподписанный сертификат с общим именем (CN) = app.localhost и импортировал его в доверенные корневые центры сертификации хранить. Затем я импортировал тот же сертификат в IIS и привязал его к своему сайту с именем хоста = app.localhost.

Это сработало нормально.

Сейчас я разрабатываю api, работающий под api.localhost. Это тоже требует SSL. Итак, я создал новый самозаверяющий сертификат, как и раньше, за исключением того, что я указал CN = *.localhost. Новый сертификат был добавлен в доверенные корневые центры сертификации сохранить и импортировать в IIS, как и раньше. Оба сайта (app.localhost & api.localhost) были успешно привязаны к сертификату с подстановочными знаками.

Это не сработало.

Chrome жалуется на:

Вы попытались связаться с api.localhost, но вместо этого вы достигли сервера, идентифицирующего себя как * .localhost.

IE подает аналогичную жалобу.

Как сделать самозаверяющий подстановочный сертификат, который работает?

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

Как упоминал Дэвид Шварц, это не работает для доменов верхнего уровня. Однако он работает для любого домена ниже этого.

В мой файл c: \ windows \ system32 \ drivers \ etc \ hosts я добавил

127.0.0.1 mysitename.localhost.dev

Здесь .dev - это верхний уровень, поэтому я могу использовать подстановочный знак для * .localhost.dev

Я не делал этого с IIS, но это отлично работает с apache и указанием

<VirtualHost *:80>
    DocumentRoot C:/xampp/htdocs/hookd/mysite/public
    ServerName mysitename.localhost.dev
</VirtualHost>

К сожалению, вам придется настроить новую запись в hosts и в конфигурации apache для каждого сайта, но это намного проще, чем подписывать новый сертификат.