Як я можу створити сертифікат, що підписався для localhost?


133

Я пройшов кроки, детально описані в розділі Як ви використовуєте https / SSL для localhost? але це налаштовує самопідписаний сертифікат для мого імені машини, і під час перегляду його через https: // localhost я отримую попередження IE.

Чи є спосіб створити сертифікат для "localhost", який підписує власноруч, щоб уникнути цього попередження?


Ви встановили сертифікат як ЦА?
vcsjones

Я стежив за процесом встановлення самопідписаного сертифіката в IIS під Win7. Але це створює сертифікат для "mymachinename", і мені потрібен один для "localhost".
chris

1
Привіт! Розглянемо, як встановити відповідь Аурі як основну відповідь, оскільки макіяж застарілий. Посилання на відповідь: stackoverflow.com/a/44164653/1461602
Tormod Haugene

Відповіді:


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 повинні довіряти цій програмі. Наприклад, якщо ви хочете використовувати цей kert з 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).
Фелікс Сапареллі

7
Крім того, ви можете автоматизувати процес повністю, додаючи -subj '/CN=localhost'до opensslаргументів.
Фелікс Сапареллі

8
Щоб OS X довіряла йому з командного рядка, а не натискала на нього, ви можете зробити:sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo

1
Також актуально для Linux. Дуже дякую.
Марсель

1
Я дотримувався всіх цих кроків, і я отримую ERR_SSL_VERSION_OR_CIPHER_MISMATCHв Chrome 60 і Safari 10.1.2 це теж не подобається.
styfle

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і виберіть свій сертифікат зі спадного меню.

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

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

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


9
Це має бути прийнята відповідь! Це працює! Якщо ви поспілкувались із сертифікатом localhost та надійним сертифікатом. Не забудьте видалити всі старі сертифікати localhost (через консоль mmc та IIS (сервер з найвищим керуванням)
Tuan Jinn

Дякую! На цю тему відповідей так багато і відповідей на блогу, але дуже мало розмов про проблеми довіри до сертифікату. Порада: Можливо, ви повинні пояснити, чому ви не використовуєте стандартний порт SSL 443? Я думаю, це тому, що цей порт часто приймають якийсь інший процес.
HoffZ

Дуже приємна відповідь, і працює добре на IIS, як 2020. Дякую!
alessandrocb

Також працює для псевдонімів у файлі господарів
Zef

52

Ви можете використовувати PowerShell для генерування самопідписаного сертифіката за допомогою нового командлета, що підписує власний підпис:

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

Примітка: makecert.exe застарілий.

Довідка на Cmdlet: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate


Це має бути відповідь станом на 2017 рік
Tormod Haugene

1
Для тих, хто дотримується і не знає, як рухатись до встановлення результату cert, дотримуйтесь кроків у цьому відео, це працювало для мене! youtube.com/watch?v=y4uKPUFmSZ0
Ерік Браун - Cal

6
куди зберігаються файли ключів та crt?
woojoo666

1
@ woojoo666 з -KeyLocationпрапором ви можете вказати місцезнаходження.
Гамід

46

Провівши багато часу на цю проблему, я виявляв, коли я дотримувався пропозицій щодо використання IIS для виготовлення самопідписаного сертифіката, я виявив, що "Виданий та виданий" невірний. SelfSSL.exe був ключовим у вирішенні цієї проблеми. Наведений нижче веб-сайт не лише надав поетапний підхід до виготовлення самопідписаних сертифікатів, але і вирішив проблему "Видано та видано". Ось найкраще рішення, яке я знайшов для виготовлення сертифікатів самопідписання. Якщо ви хочете побачити той самий підручник у формі відео, натисніть тут .

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

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

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


Стаття RobBagby.com прекрасно працювала для мене. Добре знайдіть Генрі.
cymorg

МЕГА! Це відео має низьку якість, але має все необхідне.
tonco

2
Посилання на сайт robbagby мертве. Дивіться мою відповідь на 2 високоякісні навчальні програми на ютубі від 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
куди пішов мій сертифікат: o його не в C: \ Windows \ system32
EaterOfCode

2
До речі, інструмент makecert.exe використовується через командний рядок Visual Studio для майбутніх читачів. Ви також можете скористатися Інструментами набору ресурсів Інтернету (IIS) та встановити SelfSSL 1.0. microsoft.com/downloads/en/…
atconway

3
Хоча швидкі відповіді чудові, вони не завжди допомагають. "Сертифікат не можна використовувати як сертифікат сервера SSL" - це помилка, яку я бачу в IIS7. Op також згадував попередження браузера & не "Як створити сертифікат"?
cmroanirgo

Ви можете опустити крок cert2spc через параметр pvk2pfx -spc приймає .spc і .cer
abatishchev

1
@EaterOfCode Шахта була в C: \ Windows \ SysWOW64
Bay Sola

10

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

Створіть файл cert як .pfx та імпортуйте його в IIS. І додайте його як довірений авторитет root cert.


1
Після того, як випробовували всі спроби "магії" PowerShell та інших речей, які просто не спрацювали - інструмент Pluralsight створив для мене робочий сценарій за 30 секунд, і це включає час, необхідний для поїдання піци (+ завантаження та витягнути інструмент, я маю на увазі). Оскільки я все ще працюю з Windows 7 на цьому старому ноутбуці - це було ідеальним рішенням для мене, дякую!
Аде

1

Так і ні. Сертифікати, що підписуються самостійно, призводять до цього попереджувального повідомлення, оскільки сертифікат не був підписаний довіреним органом сертифікації. Існує кілька варіантів, за допомогою яких можна видалити це попередження на локальній машині. Детально дивіться відповіді на це запитання:

Що потрібно зробити, щоб Internet Explorer 8 прийняв сертифікат, який підписав самостійно?

Сподіваюся, це допомагає!


Редагувати:

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

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


Ні, попереджувальне повідомлення є, оскільки URL ( localhost ) не відповідає імені cert, яке видається під назвою машини. Якщо я перейду на mymachinename, я не отримаю помилку. На жаль, мені доводиться використовувати localhost, а не ім’я машини з причин, які не впливають на питання.
chris


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.