Как я могу создать самоподписанный сертификат для localhost?
Я прошел шаги, подробно описанные в разделе Как вы используете https / SSL на локальном хосте? но это устанавливает самоподписанный сертификат для моего имени машины, и при просмотре его через https://localhost/ я получаю предупреждение IE.
Есть ли способ создать самозаверяющий сертификат для "localhost", чтобы избежать этого предупреждения?
15 ответов
Поскольку этот вопрос помечен как IIS
и я не могу найти хороший ответ о том, как получить доверенный сертификат, я дам свои 2 цента об этом:
Сначала используйте команду из @AuriRahimzadeh в PowerShell от имени администратора:
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
Это хорошо, но сертификат не является доверенным и приведет к следующей ошибке. Это потому, что он не установлен в Trusted Root Certification Authorities
,
Решите это, начав mmc.exe
,
Затем перейдите к:
Файл -> Добавить или удалить оснастку -> Сертификаты -> Добавить -> Учетная запись компьютера -> Локальный компьютер
Разверните Personal
папку, и вы увидите свой localhost
сертификат:
Скопируйте это в Trusted Root Certification Authorities - Certificates
Последний шаг - открыть Internet Information Services (IIS) Manager
или просто inetmgr.exe
, Оттуда перейдите на свой сайт, выберите Bindings...
а также Add...
или же Edit...
, Задавать https
и выберите свой сертификат из выпадающего списка.
Вашему сертификату теперь доверяют:
Хотя этот пост является пометкой для Windows, это актуальный вопрос для OS X, ответы на который я не видел в других местах. Вот шаги, чтобы создать самоподписанный сертификат для localhost на OS X:
# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt
# Add the cert to your keychain
open localhost.crt
В Keychain Access
, дважды щелкните этот новый сертификат localhost. Разверните стрелку рядом с "Доверие" и выберите "Всегда доверять". Chrome и Safari теперь должны доверять этому сертификату. Например, если вы хотите использовать этот сертификат с node.js:
var options = {
key: fs.readFileSync('/path/to/localhost.key').toString(),
cert: fs.readFileSync('/path/to/localhost.crt').toString(),
ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
honorCipherOrder: true,
secureProtocol: 'TLSv1_2_method'
};
var server = require('https').createServer(options, app);
Вы можете использовать PowerShell для создания самозаверяющего сертификата с помощью командлета new-selfsignedcertificate:
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
Примечание: makecert.exe устарела.
Ссылка на командлет: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate
Потратив достаточно много времени на эту проблему, я обнаружил, что всякий раз, когда я следовал советам использовать IIS для создания самозаверяющего сертификата, я обнаружил, что выданный и выданный был неправильным. SelfSSL.exe был ключом к решению этой проблемы. Следующий веб-сайт не только предоставил пошаговый подход к созданию самозаверяющих сертификатов, но также решил проблему "Выдан и выдан". Вот лучшее решение, которое я нашел для создания самозаверяющих сертификатов. Если вы хотите увидеть ту же инструкцию в видео форме, нажмите здесь.
Пример использования SelfSSL будет выглядеть примерно так:
SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2
SelfSSL /? предоставит список параметров с пояснениями.
Если вы пытаетесь создать самозаверяющий сертификат, который позволяет вам идти http://localhost/mysite
Тогда вот способ создать его
makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx
От http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200
Я бы порекомендовал инструмент Pluralsight для создания самозаверяющих сертификатов: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatically-in-net
Создайте свой сертификат в формате.pfx и импортируйте его в IIS. И добавьте его в качестве доверенного корневого центра сертификации.
Самый быстрый способ сгенерировать сертификат localhost.
openssl req -x509 -out localhost.crt -keyout localhost.key \
-newkey rsa:2048 -nodes -sha256 \
-subj '/CN=localhost' -extensions EXT -config <( \
printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
И да и нет. Самоподписанные сертификаты приводят к появлению этого предупреждающего сообщения, поскольку сертификат не был подписан доверенным центром сертификации. Есть несколько вариантов удаления этого предупреждения на вашем локальном компьютере. Посмотрите ответы на этот вопрос с самым высоким рейтингом для деталей:
Что мне нужно сделать, чтобы Internet Explorer 8 принял самозаверяющий сертификат?
Надеюсь это поможет!
РЕДАКТИРОВАТЬ:
Извините, я изначально не знал, что вы были привязаны к localhost. Вы можете попытаться следовать указаниям по ссылке ниже, чтобы "Создать самозаверяющий сертификат с правильным общим именем".
http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html
В LAN (локальной сети) у нас есть серверный компьютер, здесь с именем xhost, работающий под управлением Windows 10, IIS активирован как WebServer. Мы должны получить доступ к этому компьютеру через браузер, такой как Google Chrome, не только с localhost через https: // localhost / с самого сервера, но и с других хостов в локальной сети с URL https: // xhost /:
https://localhost/
https://xhost/
https://xhost.local/
...
При таком способе доступа у нас здесь не полное доменное имя, а только имя локального компьютера xhost.
Или из WAN:
https://dev.example.org/
...
Вы должны заменить xhost на свое настоящее имя локального компьютера.
Ни одно из вышеперечисленных решений не может нас удовлетворить. После нескольких дней попыток мы приняли решение openssl.exe. Мы используем 2 сертификата - сертификат CA (самосертификат центра сертификации) RootCA.crt и xhost.crt, сертифицированный первым. Мы используем PowerShell.
1. Создайте безопасный каталог и перейдите в него:
cd C:\users\so\crt
2. Создайте RootCA.pem, RootCA.key и RootCA.crt как самосертифицированный центр сертификации:
openssl req -x509 -nodes -new -sha256 -days 10240 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=ZA/CN=RootCA-CA"
openssl x509 -outform pem -in RootCA.pem -out RootCA.crt
3. сделать запрос на сертификацию: xhost.key, xhost.csr:
C: Country
ST: State
L: locality (city)
O: Organization Name
Organization Unit
CN: Common Name
openssl req -new -nodes -newkey rsa:2048 -keyout xhost.key -out xhost.csr -subj "/C=ZA/ST=FREE STATE/L=Golden Gate Highlands National Park/O=WWF4ME/OU=xhost.home/CN=xhost.local"
4. получить сертификат xhost.crt от RootCA.pem:
openssl x509 -req -sha256 -days 1024 -in xhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out xhost.crt
с файлом extfile domains.ext, определяющим множество защищенных способов доступа к веб-сайту сервера:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = xhost
DNS.3 = xhost.local
DNS.4 = dev.example.org
DNS.5 = 192.168.1.2
5. Сделайте xhost.pfx PKCS #12,
объединить частный xhost.key и сертификат xhost.crt, разрешив импорт в iis. На этом шаге запрашивается пароль, пожалуйста, оставьте его пустым, нажав клавишу [RETURN] (без пароля):
openssl pkcs12 -export -out xhost.pfx -inkey xhost.key -in xhost.crt
6. импортировать xhost.pfx в iis10
установлен на компьютере xhost (здесь localhost). и перезапустите службу IIS.
IIS10 Gestionnaire des services Internet (IIS) (%windir%\system32\inetsrv\InetMgr.exe)
7. Свяжите ssl с сертификатом xhost.local на порту 443.
Перезапустите службу IIS.
8. Импортируйте RootCA.crt в доверенные корневые центры сертификации.
через Google Chrome на любом компьютере, который будет заходить на сайт https: // xhost /.
\ Google Chrome /… / Настройки / [Дополнительно] / Конфиденциальность и безопасность / Безопасность / Управление сертификатами
Импортировать RootCA.crt
Браузер покажет это действительное дерево сертификатов:
RootCA-CA
|_____ xhost.local
Ошибка сертификата не появится через LAN, даже через WAN через https://dev.example.org.
Вот весь файл сценария Powershell socrt.ps1 для генерации всех необходимых файлов сертификатов из нуля:
#
# Generate:
# RootCA.pem, RootCA.key RootCA.crt
#
# xhost.key xhost.csr xhost.crt
# xhost.pfx
#
# created 15-EEC-2020
# modified 15-DEC-2020
#
#
# change to a safe directory:
#
cd C:\users\so\crt
#
# Generate RootCA.pem, RootCA.key & RootCA.crt as Certification Authority:
#
openssl req -x509 -nodes -new -sha256 -days 10240 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=ZA/CN=RootCA-CA"
openssl x509 -outform pem -in RootCA.pem -out RootCA.crt
#
# get RootCA.pfx: permitting to import into iis10: not required.
#
#openssl pkcs12 -export -out RootCA.pfx -inkey RootCA.key -in RootCA.crt
#
# get xhost.key xhost.csr:
# C: Country
# ST: State
# L: locality (city)
# O: Organization Name
# OU: Organization Unit
# CN: Common Name
#
openssl req -new -nodes -newkey rsa:2048 -keyout xhost.key -out xhost.csr -subj "/C=ZA/ST=FREE STATE/L=Golden Gate Highlands National Park/O=WWF4ME/OU=xhost.home/CN=xhost.local"
#
# get xhost.crt certified by RootCA.pem:
# to show content:
# openssl x509 -in xhost.crt -noout -text
#
openssl x509 -req -sha256 -days 1024 -in xhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out xhost.crt
#
# get xhost.pfx, permitting to import into iis:
#
openssl pkcs12 -export -out xhost.pfx -inkey xhost.key -in xhost.crt
#
# import xhost.pfx in iis10 installed in xhost computer (here localhost).
#
Чтобы установить openSSL для Windows, посетите https://slproweb.com/products/Win32OpenSSL.html
Вот что я сделал, чтобы получить действительный сертификат для локального хоста в Windows:
- Загрузите исполняемый файл mkcert (https://github.com/FiloSottile/mkcert/releases) и переименуйте его в mkcert.exe.
- Запустите «mkcert-install»
- Откройте диспетчер сертификатов Windows (certmgr.msc)
- Щелкните правой кнопкой мыши «Доверенные корневые центры сертификации» -> «Импорт».
- Импортировать корневой сертификат (rootCA.pem) из C:\Users[имя пользователя]\AppData\Local\mkcert\
- Создайте сертификат *.p12 для указанных доменов: "mkcert -pkcs12 [имя1] [имя2]"
- Переименуйте сертификат *.p12 в *.pfx
- В IIS -> Сертификаты сервера -> Импорт (pfx) в группу «Личные» [пароль по умолчанию: «changeit»]
- Назначить сертификат веб-сайту по умолчанию (привязка -> https (443) -> изменить -> сертификат SSL)
Если вы используете Visual Studio, здесь описан простой способ настроить и включить SSL с помощью IIS Express.
Самозаверяющий сертификат можно создать одной строкой с помощью сценария PowerShell с помощью приведенного ниже командлета.
Командлет: New-SelfSignedCertificate
Пример: New-SelfSignedCertificate -FriendlyName USProd_Certif -DnsName PRODCD-USCertificate -CertStoreLocation Cert: \ LocalMachine \ My
Пример: http://dotnet-helpers.com/powershell/create-custom-name-self-signed-certificate-using-powershell/
Я сделал веб-инструмент, который генерирует самозаверяющие сертификаты SSL ( http://codeassistant.net/Certificate). По умолчанию он генерирует сертификат для "localhost". Может быть, это то, что вы ищете.
Отказ от ответственности: я "работаю" там.
Решение для Windows 10
Ни один из вышеперечисленных не работал для меня, кроме этого:
1. Выполните следующие действия
$cert = New-SelfSignedCertificate -Subject local.YourDomain -DnsName local.yourdomain.co.uk
затем
Format-List -Property *
или шаги в разделе «Создание сертификата с одним субъектом» здесь: https://adamtheautomator.com/new-selfsignedcertificate/
Вы также можете попробовать SAN ( создание сертификата альтернативного имени субъекта (SAN) ).
2. Откройте ммк
Откройте поиск Windows и введите mmc
затем выполните следующие действия:
Откройте «Файл» > «Добавить/удалить оснастку» , выберите «Сертификаты» и нажмите «Добавить» . Выберите учетную запись компьютера , нажмите «Далее» , а затем «Готово» .
3. Скопируйте сертификат из Личного в Доверенный.
Разверните Personal в разделе Certificates в mmc
Скопируйте новый сертификат из Личного в Доверенные корневые центры сертификации.
4. Выберите новый сертификат для привязки вашего домена в IIS.
5. Перезапустите домен/сайт