У меня есть subdomain.example.com
то , что я использую в целях разработки. Мое решение для веб-приложений содержит веб-API и т. Д., Которые мне нужно вызывать из внешних систем, поэтому я не использую localhost.
Теперь мне нужно протестировать SSL и получить сертификат для моего subdomain.example.com
доменного имени разработки.
Я попытался создать самозаверяющий сертификат, как описано в http://technet.microsoft.com/en-us/library/cc753127(v=ws.10).aspx , но этот сертификат работает только для localhost. Можно ли использовать этот сертификат для моих целей или мне придется создавать самозаверяющий поддомен для моего поддомена разработки? Если мне нужно создать самозаверяющую сертификацию для моего поддомена разработки, какую утилиту или онлайн-службу (бесплатно) я могу использовать для этого?
источник
makecert.exe
чтобы оказаться на моем пути. Что касается сертификатов, я думал, что буду более безопасным и использую-a SHA512 -len 8192
- на создание этого сертификата ушла целая вечность. И, как я и подозревал, это никак не повлияло на уровень шифрования, который использует IIS. По умолчанию IIS использует 128-битный режим, чтобы изменить это , вам нужно выполнить групповую политику . Еще одно замечание для других читателей: не меняйте магические числа после-eku
, они необходимы.sha1
. Замените-a sha512
и подумайте о добавлении-len 2048
ко второмуmakecert
вызову, и все должно быть хорошо.Использование PowerShell
Начиная с Windows 8.1 и Windows Server 2012 R2 (Windows PowerShell 4.0) и выше, вы можете создать самозаверяющий сертификат, используя новый
New-SelfSignedCertificate
командлета:Примеры:
Использование диспетчера IIS
www.domain.com
илиsubdomain.domain.com
источник
New-SelfSignedCertificate -FriendlyName *.mydomain.local -DnsName *.mydomain.local, localhost -CertStoreLocation Cert:\LocalMachine\My
создает сертификат в личном хранилище. Затем я сначала экспортировал сертификат в файл, а затем повторно импортировал его в IIS через IIS Manager (чтобы использовать его для привязки https), а затем в доверенные корневые центры сертификации через MMC (чтобы избежать предупреждений браузера).-NotAfter
Опция также удобно указать дату истечения срока действия (без него, по умолчанию только 1 год). Пример, который я использовалNew-SelfSignedCertificate -DnsName *.mydomain.com -FriendlyName *.mydomain.com -NotAfter (Get-Date).AddYears(15) -CertStoreLocation cert:\LocalMachine\My
Чтобы создать новый сертификат для вашего конкретного домена:
Откройте Powershell ISE от имени администратора, выполните команду:
Чтобы доверять новому сертификату:
Чтобы привязать сертификат к вашему сайту:
источник
Мне пришлось ломать голову над самозаверяющими сертификатами в Windows, комбинируя кусочки из предоставленных ответов и дополнительных ресурсов. Вот мой собственный (и, надеюсь, полный) обзор. Надеюсь, это избавит вас от моей болезненной кривой обучения. Он также содержит информацию по связанным темам, которая рано или поздно появится, когда вы создадите свои собственные сертификаты.
Создайте самозаверяющий сертификат в Windows 10 и ниже
Не используйте makecert.exe. Microsoft устарела.
Современный способ использует команду Powershell.
Windows 10:
Откройте Powershell с правами администратора:
Windows 8, Windows Server 2012 R2:
В Powershell в этих системах параметры -FriendlyName и -NotAfter не существуют. Просто удалите их из командной строки выше.
Откройте Powershell с правами администратора:
Альтернативой является использование метода для более старой версии Windows ниже, который позволяет использовать все функции Win 10 для создания сертификатов ...
Старые версии Windows:
Моя рекомендация для более старых версий Windows - создать сертификат на машине Win 10, экспортировать его в файл .PFX с помощью экземпляра mmc (см. «Доверять сертификату» ниже) и импортировать его в хранилище сертификатов на целевой машине с старая ОС Windows. Чтобы импортировать сертификат, НЕ щелкайте его правой кнопкой мыши. Хотя в контекстном меню есть пункт «Импортировать сертификат», все мои попытки использовать его на Win Server 2008 не удалось. Вместо этого откройте другой экземпляр mmc на целевом компьютере, перейдите в «Сертификаты (локальный компьютер) / Персональные / Сертификаты» щелкните правой кнопкой мыши среднюю панель и выберите Все задачи → Импорт.
Полученный сертификат
Обе приведенные выше команды создают сертификат для доменов
localhost
и*.dev.local
.Версия Win10 дополнительно имеет срок жизни 15 лет и читаемое отображаемое имя «Dev Cert * .dev.local, dev.local, localhost».
Обновление: если вы укажете несколько записей имени хоста в параметре
-DnsName
(как показано выше), первая из этих записей станет субъектом домена (AKA Common Name). Полный список всех записей имен хостов будет храниться в поле Subject Alternative Name (SAN) сертификата. (Спасибо @BenSewards за указание на это.)После создания сертификат будет сразу доступен в любых HTTPS-привязках IIS (инструкции ниже).
Доверяйте сертификату
Новый сертификат не является частью какой-либо цепочки доверия и поэтому не считается заслуживающим доверия ни одним браузером. Чтобы изменить это, мы скопируем сертификат в хранилище сертификатов для доверенных корневых центров сертификации на вашем компьютере:
Откройте mmc.exe, Файл → Добавить / удалить оснастку → выберите «Сертификаты» в левом столбце → Добавить → выберите «Учетная запись компьютера» → Далее → «Локальный компьютер ...» → Готово → ОК
В левом столбце выберите «Сертификаты (локальный компьютер) / Личный / Сертификаты».
Найдите только что созданный сертификат (в Win 10 может помочь столбец «Понятное имя»).
Выберите этот сертификат и нажмите Ctrl-C, чтобы скопировать его в буфер обмена.
В левом столбце выберите «Сертификаты (локальный компьютер) / Доверенные корневые центры сертификации / Сертификаты».
Нажмите Ctrl-V, чтобы вставить сертификат в это хранилище.
Сертификат должен появиться в списке доверенных корневых центров и теперь считается заслуживающим доверия.
Использование в IIS
Теперь вы можете перейти в диспетчер IIS, выбрать привязки локального веб-сайта → Добавить → https → ввести имя хоста формы
myname.dev.local
(ваш сертификат действителен только для*.dev.local
) и выбрать новый сертификат → ОК.Добавить в хосты
Также добавьте имя вашего хоста в C: \ Windows \ System32 \ drivers \ etc \ hosts:
Счастливый
Теперь Chrome и IE должны рассматривать сертификат как заслуживающий доверия и загружать ваш веб-сайт при открытии
https://myname.dev.local
.Firefox поддерживает собственное хранилище сертификатов. Чтобы добавить сюда свой сертификат, вы должны открыть свой веб-сайт в FF и добавить его в исключения, когда FF предупреждает вас о сертификате.
Для браузера Edge могут потребоваться дополнительные действия (см. Далее).
Проверить сертификат
Firefox - лучший выбор для проверки ваших сертификатов. (Поверьте, я сам фанат Chrome, но в данном случае FF лучше.)
Вот причины:
Это предупреждение верно! Как отмечалось выше, Firefox не использует хранилище сертификатов Windows и будет доверять этому сертификату только в том случае, если вы добавите для него исключение. Кнопка для этого находится прямо под предупреждениями.
Это предупреждение показывает, что вы сделали что-то не так. Домен (подстановочный знак) вашего сертификата не соответствует домену вашего веб-сайта. Проблема должна быть решена либо путем изменения (под) домена вашего веб-сайта, либо путем выпуска нового сертификата, который соответствует. Фактически вы можете добавить исключение в FF, даже если сертификат не соответствует, но вы никогда не получите зеленый символ замка в Chrome с такой комбинацией.
Firefox может отображать множество других приятных и понятных предупреждений о сертификатах в этом месте, например, сертификаты с истекшим сроком действия, сертификаты с устаревшими алгоритмами подписи и т. Д. Я не нашел другого браузера, который дал бы мне такой уровень обратной связи, чтобы решить какие-либо проблемы.
Какой шаблон (под) домена мне выбрать для разработки?
В приведенной выше команде New-SelfSignedCertificate мы использовали подстановочный домен
*.dev.local
.Вы можете подумать: а почему бы не использовать
*.local
?Простая причина: это незаконный домен с подстановочными знаками.
Сертификаты с подстановочными знаками должны содержать как минимум доменное имя второго уровня.
Итак, домены формы
*.local
удобны для разработки веб-сайтов HTTP. Но не так много для HTTPS, потому что вам придется выдавать новый соответствующий сертификат для каждого нового проекта, который вы запускаете.Важные примечания:
motör_head.dev.local
к вашему шаблону шаблону*.dev.local
. Они подчинятся, когда вы переключитесь наmotoer-head.dev.local
.*.dev.local
совпадает,myname.dev.local
но НЕother.myname.dev.local
!*.*.dev.local
сертификатах НЕЛЬЗЯ использовать многоуровневые подстановочные знаки ( ). Такother.myname.dev.local
может быть покрыт только подстановочным знаком формы*.myname.dev.local
. В результате лучше не использовать доменную часть четвертого уровня. Поместите все свои вариации в часть третьего уровня. Таким образом, вы получите единый сертификат для всех ваших сайтов разработчиков.Проблема с Edge
На самом деле это не касается самозаверяющих сертификатов, но все же связано со всем процессом:
после выполнения вышеуказанных шагов Edge может не отображать какой-либо контент при открытии
myname.dev.local
.Причина - характерная особенность сетевого управления Windows 10 для современных приложений, называемая «Изоляция сети».
Чтобы решить эту проблему, откройте командную строку с правами администратора и один раз введите следующую команду:
Более подробную информацию о Edge и Network Isolation можно найти здесь: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
источник
appname.dev has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.
что, как говорится, не позволяет вам добавить исключение клиента, вопреки вашей инструкции. Является ли это неправильной конфигурацией в самом IIS в отношении параметров SSL, Требовать SSL и клиентских сертификатов?*.mydomain.com
может быть действительным сертификатом для,me.mydomain.com
но не дляme.at.mydomain.com
.Я столкнулся с той же проблемой, когда хотел включить SSL для проекта, размещенного на IIS 8. Наконец , после многих дней борьбы с командами makecert я использовал OpenSSL. Сертификат создается в Debian, но я мог легко импортировать его в IIS 7 и 8.
Загрузите OpenSSL совместимый с вашей ОС, и этот файл конфигурации. Установите файл конфигурации как конфигурацию по умолчанию OpenSSL.
Сначала мы сгенерируем закрытый ключ и сертификат центра сертификации (CA). Этот сертификат предназначен для подписи запроса на сертификат (CSR).
Вы должны заполнить все поля, которые требуются в этом процессе.
openssl req -new -x509 -days 3650 -extensions v3_ca -keyout root-cakey.pem -out root-cacert.pem -newkey rsa:4096
Вы можете создать файл конфигурации с настройками по умолчанию следующим образом: Теперь мы сгенерируем запрос сертификата, который является файлом, который отправляется в центры сертификации.
В качестве общего имени необходимо указать домен вашего сайта, например: public.organization.com .
openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096
Теперь запрос на сертификат подписан сгенерированным сертификатом CA.
openssl x509 -req -days 365 -CA root-cacert.pem -CAkey root-cakey.pem -CAcreateserial -in server-csr.pem -out server-cert.pem
Сгенерированный сертификат необходимо экспортировать в файл .pfx, который можно импортировать в IIS.
openssl pkcs12 -export -out server-cert.pfx -inkey server-key.pem -in server-cert.pem -certfile root-cacert.pem -name "Self Signed Server Certificate"
На этом этапе мы импортируем сертификат CA.
На вашем сервере необходимо импортировать сертификат CA в доверенные корневые центры сертификации, чтобы IIS мог доверять импортируемому сертификату. Помните, что сертификат, который нужно импортировать в IIS, был подписан сертификатом ЦС.
На этом этапе IIS доверяет подлинности нашего сертификата.
На последнем этапе мы импортируем сертификат в IIS и добавим сайт привязки.
Теперь перейдите на свой сайт в диспетчере IIS и выберите Bindings ... и добавьте новую привязку.
Выберите https в качестве типа привязки, и вы сможете увидеть импортированный сертификат.
источник
Другой вариант - создать самозаверяющий сертификат, который позволяет указать доменное имя для каждого веб-сайта. Это означает, что вы можете использовать его во многих доменных именах.
В диспетчере IIS
Теперь на вашем сайте в IIS ...
источник
Еще один простой способ создать самоподписанный сертификат - использовать Jexus Manager,
https://www.jexusmanager.com/en/latest/tutorials/self-signed.html
источник