Как я могу создать самозаверяющий сертификат для localhost?

134

Я выполнил шаги, подробно описанные в разделе Как использовать https / SSL на локальном хосте? но это устанавливает самозаверяющий сертификат для моего имени машины, и при просмотре его через https: // localhost я получаю предупреждение IE.

Есть ли способ создать самозаверяющий сертификат для "localhost", чтобы избежать этого предупреждения?

Крис
источник
Вы установили сертификат как CA?
vcsjones
Я следил за процессом установки самозаверяющего сертификата в IIS под Win7. Но это создает сертификат для mymachinename, а мне нужен сертификат для localhost.
Крис
1
Здравствуй! Рассмотрите возможность установки ответа Аури в качестве основного ответа, поскольку makecert устарел. Ссылка на ответ: stackoverflow.com/a/44164653/1461602
Тормод Хаугин

Ответы:

81

Хотя этот пост помечен для 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);
Бен Флинн
источник
2
Первая команда ssh-keygen,, не нужна, так как команда openssl также создает новый ключ (и перезаписывает тот, который был создан ssh).
Феликс Сапарелли 02
7
Кроме того, вы можете автоматизировать процесс полностью, добавляя -subj '/CN=localhost'к opensslаргументам.
Феликс Сапарелли, 03
8
Чтобы OS X доверяла ему из командной строки вместо того, чтобы щелкать sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
пальцем по экрану
1
Также актуально для linux. Большое спасибо.
Марсель
1
Я выполнил все эти шаги, и у меня ERR_SSL_VERSION_OR_CIPHER_MISMATCHChrome 60, и Safari 10.1.2 это тоже не нравится.
Styfle 05
61

Поскольку этот вопрос помечен, 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и выберите свой сертификат из раскрывающегося списка.

введите описание изображения здесь

Теперь вашему сертификату доверяют:

введите описание изображения здесь

Ogglas
источник
9
Это должен быть принятый ответ! Оно работает! Если вы испортили локальный хост и доверенный сертификат. Обязательно удалите все старые сертификаты localhost (через консоль mmc и IIS (самый управляемый сервер)
Туан Джинн,
Спасибо! На эту тему так много SO-ответов и сообщений в блоге, но очень мало говорится о проблемах доверия к сертификатам. Совет: Может быть, вам стоит объяснить, почему вы не используете порт SSL по умолчанию 443? Я думаю, это потому, что этот порт часто используется каким-то другим процессом.
HoffZ
Действительно хороший ответ и хорошо работает в IIS в качестве 2020 года. Большое спасибо!
alessandrocb
Также работает для псевдонимов в файле hosts
Zef
52

Вы можете использовать PowerShell для создания самозаверяющего сертификата с помощью командлета new-selfsignedcertificate:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Примечание. Программа makecert.exe устарела.

Ссылка на командлет: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate

Аури Рахимзаде
источник
Это должен быть ответ по состоянию на 2017 год.
Тормод Хаугин
1
Для тех, кто следит и не знает, как установить полученный сертификат, следуйте инструкциям в этом видео, у меня это сработало! youtube.com/watch?v=y4uKPUFmSZ0
Эрик Браун - Cal
6
где хранятся файлы ключей и crt?
woojoo666
1
@ woojoo666 с -KeyLocationфлагом вы можете указать местоположение.
hamid
46

Потратив немало времени на эту проблему, я обнаружил, что всякий раз, когда я следовал советам по использованию IIS для создания самоподписанного сертификата, я обнаруживал, что поля «Кому выдан» и «Кем выдан» неверны. SelfSSL.exe был ключом к решению этой проблемы. Следующий веб-сайт не только предоставил пошаговый подход к созданию самозаверяющих сертификатов, но также решил проблему «Кому выдан» и «Кем выдан».Вот лучшее решение, которое я нашел для создания самоподписанных сертификатов. Если вы предпочитаете просмотреть тот же учебник в виде видео, нажмите здесь .

Пример использования SelfSSL будет выглядеть примерно так:

SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2

SelfSSL /? предоставит список параметров с пояснениями.

app.developer.henry
источник
Статья RobBagby.com мне отлично подошла. Хорошая находка Генри.
cymorg
МЕГА! У этого видео плохое качество, но есть все необходимое.
tonco
2
Ссылка на сайт robbagby мертва. См. Мой ответ на 2 высококачественных урока по YouTube от CodeCowboyOrg
Моисей Мачуа,
Отредактированный ответ на ссылку на Wayback-архив статьи на robbagby.com.
Прометей
23

Если вы пытаетесь создать самоподписанный сертификат, который позволяет вам перейти, то 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

Дэвид Бурела
источник
2
Куда делся
2
Кстати, инструмент makecert.exe используется в командной строке Visual Studio для будущих читателей. Вы также можете использовать инструменты набора ресурсов Internet Information Services (IIS) и установить SelfSSL 1.0. microsoft.com/downloads/en/…
atconway
3
Хотя быстрые ответы хороши, они не всегда помогают. «Сертификат не может использоваться в качестве сертификата сервера SSL» - это ошибка, которую я вижу в IIS7. Оп также упомянул предупреждения браузера, а не «Как мне создать сертификат»?
cmroanirgo
Вы можете опустить параметр cert2spc step due, pvk2pfx -spc принимает как .spc, так и .cer
абатищев
1
@EaterOfCode Mine находился в C: \ Windows \ SysWOW64
Бэй Сола
10

Я бы порекомендовал инструмент Pluralsight для создания самоподписанных сертификатов: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatically-in-net

Сделайте свой сертификат как .pfx и импортируйте его в IIS. И добавьте его как доверенный корневой центр сертификации.

cederlof
источник
1
После того, как я попробовал всевозможные «магии» PowerShell и другие вещи, которые просто не работали - инструмент Pluralsight сгенерировал для меня рабочий скрипт за 30 секунд, включая время, которое потребовалось, чтобы съесть пиццу (+ скачать и извлеките инструмент, я имею в виду). Поскольку я все еще использую Windows 7 на этом старом ноутбуке - это было идеальное решение для меня, спасибо!
Ade
1

Да и нет. Самоподписанные сертификаты приводят к появлению этого предупреждающего сообщения, поскольку сертификат не был подписан доверенным центром сертификации. Есть несколько вариантов, которые вы можете рассмотреть, чтобы удалить это предупреждение на вашем локальном компьютере. Подробнее см. Ответы на этот вопрос с наивысшими оценками:

Что мне нужно сделать, чтобы Internet Explorer 8 принял самоподписанный сертификат?

Надеюсь это поможет!


РЕДАКТИРОВАТЬ:

Извините, я изначально не знал, что вы ограничены localhost. Вы можете попытаться следовать инструкциям по приведенной ниже ссылке «Создать самоподписанный сертификат с правильным общим именем».

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html

Фил Кляйн
источник
Нет, предупреждающее сообщение появляется, потому что URL-адрес ( localhost ) не соответствует имени сертификата, который выдается под именем компьютера. Если я переключусь на mymachinename, я не получу ошибку. К сожалению, я должен использовать localhost, а не имя машины по причинам, не влияющим на вопрос.
Крис
1

вы можете попробовать mkcert.

macos: brew install mkcert

Кларк Ю
источник
0

Если вы используете Visual Studio, здесь описан простой способ настроить и включить SSL с помощью IIS Express.

Амир Чатрбар
источник