Я успешно создал и использовал самоподписанный сертификат на своей машине разработки (IIS 7.5 - Windows 7).
Чтобы сделать это, я генерировал сам подписанный сертификат с общим названием (CN) = app.localhost
и импортированный это в хранилище Доверенных корневых центров сертификации. Я затем импортировал тот же сертификат в IIS и связал его с моим сайтом с Именем хоста = app.localhost
.
Это хорошо работало.
Теперь я разрабатываю API, который работает под api.localhost
. Этому также нужен SSL. Таким образом, я создал новый самоподписанный сертификат как прежде кроме меня specifed CN = *.localhost
. Новый сертификат был добавлен к хранилищу Доверенных корневых центров сертификации и импортирован в IIS как прежде. Оба сайта (app.localhost
& api.localhost
) были успешно связаны с подстановочным сертификатом.
Это не работало.
Chrome жалуется с:
Вы попытались достигнуть api.localhost, но вместо этого Вы на самом деле достигли сервера, идентифицирующего себя как *.localhost.
IE направляет подобную жалобу.
Как я делаю самоподписанный Wildcard-сертификат, который работает?
Как упоминал Дэвид Шварц, это не работает для доменов верхнего уровня. Однако он работает для любого домена ниже этого.
В мой файл 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 для каждого сайта но это намного проще, чем подписывать новый сертификат.
Wildcard сертификат для доменов верхнего уровня не разрешен типичными браузерами по причинам, которые должны быть вполне очевидны, если подумать.