Пытаюсь следовать различным инструкциям по созданию самозаверяющего сертификата для использования с localhost. Большинство инструкций похоже для IIS, но я пытаюсь использовать Nodejs / Express. Ни один из них не работает должным образом, потому что пока сертификат установлен, ему не доверяют. вот что я пробовал, что не удалось:
- Как я могу создать самозаверяющий сертификат для localhost?
- https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-ubuntu-12-04/
- http://blogs.developerforce.com/developer-relations/2011/05/generating-valid-self-signed-certificates.html
- http://www.robbagby.com/iis/self-signed-certificates-on-iis-7-the-easy-way-and-the-most-effective-way/
Может ли кто-нибудь предложить рабочий процесс, который может это сделать? Я могу установить сертификат, но не могу доверять сертификату ни в chrome (v32), ни в IE (v10).
РЕДАКТИРОВАТЬ: в комментариях было высказано предположение, что проблема не в доверенном корне сертификата. Я установил сертификат через IE, но ему все еще не доверяют.
Ответы:
Ответы выше были частичными. Я потратил столько времени на то, чтобы это работало, это безумие. На заметку для себя в будущем: вот что вам нужно сделать:
Я работаю над Windows 10 с Chrome 65. Firefox ведет себя хорошо - просто подтвердите localhost как исключение безопасности, и он будет работать. В Chrome нет:
Шаг 1. В вашем бэкэнде создайте папку с именем
security
. мы будем работать внутри него.Шаг 2. Создайте файл конфигурации запроса
req.cnf
со следующим содержимым (кредит принадлежит: @Anshul )req.cnf:
Объяснение этого поля находится здесь .
Шаг 3. Перейдите в папку безопасности в терминале и введите следующую команду:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Шаг 4. Затем вне
security
папки в экспресс-приложении сделайте что-то вроде этого: (кредит принадлежит @Diego Mello)server.js:
Шаг 5. Запустите сервер,
node server.js
и перейдите по адресу https: // localhost: 3000. .На этом этапе у нас есть настройка сервера. Но браузер должен показать предупреждающее сообщение.
Нам необходимо зарегистрировать наш самозаверяющий сертификат в качестве доверенного центра сертификации ЦС в хранилище сертификатов Chrome / Windows.(Chrome также сохраняет это в окнах,)
Шаг 6. Откройте Инструменты разработчика в Chrome, перейдите на панель «Безопасность» и нажмите «Просмотр сертификата».
Шаг 7. перейдите в панель Details, нажмите Copy File, затем, когда появится мастер экспорта сертификатов, нажмите Next, как показано ниже:
Шаг 8. оставьте кодировку DER, нажмите «Далее», выберите
Browse
, поместите его в легко доступную папку, такую как Рабочий стол, и назовите сертификат.localhost.cer, then click Save and then Finish.
. Вы должны увидеть свой сертификат на рабочем столе.Шаг 9. Откройте
chrome://settings/
, вставив его в поле url. Внизу нажмитеAdvanced / Advanced Options
, а затем прокрутите вниз, чтобы найтиManage Certificates
.Шаг 10. Перейдите на панель «Доверенные корневые центры сертификации» и нажмите «Импорт».
Мы импортируем
localhost.cer
сертификат, который мы только что завершили на шаге 8.Шаг 11. Нажмите «Обзор», найдите
localhost.cer
, оставьте значения по умолчанию, нажмите «Далее» несколько раз - пока не появится это предупреждение, нажмите «Да».Шаг 12. закройте все и перезапустите хром. Тогда, идя к
https://localhost:3000
вам, вы должны увидеть:источник
https://localhost:3000
а Chrome зависает при загрузке. Кто-нибудь может сказать, в чем может быть причина?crl+shift+i
или,F12
чтобы открыть консоль.DNS.1 = server.local
Затем на подключающейся машине обновите файл HOSTS, чтобы указать IP-адрес сервера на имя хоста, например:192.168.0.50 server.local
Это будет разрешите совпадение сертификата и адреса и подтвердите сертификат.Кратчайший путь. Протестировано на MacOS, но может работать аналогично в других ОС.
Создать pem
Ваш экспресс-сервер
https://localhost:3000
в Google Chrome, и вы увидите, что это небезопасно. Все же!источник
Drag image to your desktop and double click it
-> Ничего не могу перетащить на рабочий стол, не перетаскивается .. Оimage
чем конкретно вы говорите?openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650
вместо первой предложенной вами строки. Кроме того, этот будет задавать меньше вопросов в процессе ...Вы можете попробовать openSSL для создания сертификатов. Взгляните на это .
Вам понадобятся файлы .key и .crt, чтобы добавить HTTPS на сервер JS Express узла. Как только вы его сгенерируете, используйте этот код, чтобы добавить HTTPS на сервер.
Это нормально работает на моем локальном компьютере, а также на сервере, на котором я его развернул. Тот, который у меня есть на сервере, был куплен у goDaddy, но у localhost был самоподписанный сертификат.
Однако каждый браузер выдавал ошибку, говоря, что соединение не является доверенным, вы хотите продолжить. После того, как я нажму «Продолжить», все заработало.
Если кто-нибудь когда-либо обходил эту ошибку с помощью самоподписанного сертификата, просветите пожалуйста.
источник
openssl genrsa -out key.pem 2048
для лучшего ключа.Как сгенерировать SSL-сертификат для localhost: ссылка
вам необходимо ввести пароль здесь, который вам нужно будет повторно ввести в следующих шагах
когда вас спросят "Общее имя" введите: localhost
источник
cp server.crt /usr/local/share/ca-certificates/.
и запустите.sudo update-ca-certificates
Тогда https-запросы localhost работают под NodeJS 8+. Id также увеличивается1024 to 2048
Вот что у меня работает
на окнах
1) Добавьте это в свой файл% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net (потому что у браузера есть проблемы с localhost (для сценариев с перекрестным происхождением)
В Windows Vista и Windows 7 Vista и Windows 7 используется контроль учетных записей пользователей (UAC), поэтому Блокнот необходимо запускать от имени администратора.
Нажмите Пуск -> Все программы -> Стандартные.
Щелкните правой кнопкой мыши Блокнот и выберите Запуск от имени администратора.
Нажмите «Продолжить» в окне UAC «Windows требуется ваше разрешение».
Когда откроется Блокнот, нажмите Файл -> Открыть.
В поле имени файла введите C: \ Windows \ System32 \ Drivers \ etc \ hosts
Нажмите Open
Добавьте это в свой файл% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net
Сохранить
Закройте и перезапустите браузеры
На Mac или Linux:
su
разрешением127.0.0.1 localdev.YOURSITE.net
При разработке вы используете localdev.YOURSITE.net вместо localhost, поэтому, если вы используете конфигурации запуска / отладки в своем ide, обязательно обновите их.
Используйте ".YOURSITE.net" в качестве домена cookie (с точкой в начале) при создании cookiem, тогда он должен работать со всеми поддоменами.
2) создайте сертификат, используя этот localdev.url
СОВЕТ: Если у вас есть проблемы с созданием сертификатов в Windows, используйте вместо этого машину VirtualBox или Vmware.
3) импортируйте сертификат, как указано на http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
источник
Mkcert от @FiloSottile делает этот процесс бесконечно проще:
mkcert -install
создать локальный ЦСmkcert localhost 127.0.0.1 ::1
для создания доверенного сертификата для localhost в текущем каталогеexport NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
Базовая настройка узла:
источник
Если вы используете OSX / Chrome, вы можете добавить самозаверяющий сертификат SSL в свою системную связку ключей, как описано здесь: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and -самосопряженных подписанный SSL-сертификаты-
Это ручной процесс, но наконец-то он заработал. Просто убедитесь, что для общего имени (CN) установлено значение «localhost» (без порта), и после добавления сертификата убедитесь, что для всех параметров доверия в сертификате установлено значение «Всегда доверять». Также убедитесь, что вы добавили его в цепочку ключей «Система», а не в цепочку ключей «Вход».
источник
Если вы используете узел, почему бы не сгенерировать их с помощью узла? Этот модуль кажется довольно полнофункциональным:
Обратите внимание, что я не буду генерировать на лету. Сгенерируйте с помощью какого-либо сценария сборки, чтобы у вас был согласованный сертификат и ключ. В противном случае вам придется каждый раз авторизовать вновь созданный самозаверяющий сертификат.
источник
В некоторых из опубликованных ответов есть части, которые были мне очень полезны для решения этой проблемы. Однако меня также интересовали минимальные количество шагов и, в идеале, отказ от OpenSSL (в Windows 10).
Итак, один важный фрагмент из ответов (кредит: @ TroyWorks ) заключается в том, что вам нужно отредактировать файл HOSTS, чтобы создать фиктивный сервер, и сопоставить его с 127.0.0.1. Это предполагает, что вы собираетесь заниматься локальной разработкой.
В моем случае я использовал сертификат SS для защиты веб-сокета в NodeJS, и этот сокет был подключен программно (в отличие от браузера). Поэтому для меня было критически важно, чтобы сертификат был принят без предупреждений или ошибок, и критически важной частью было создание сертификата с правильным CN (и, конечно же, принятие сертификата в доверенные органы, как описано в других местах ответов) , Использование IIS для создания самозаверяющего сертификата не приведет к созданию надлежащего CN, поэтому я обнаружил следующую простую команду с помощью Powershell:
Это должно быть выполнено в консоли администратора PS, но оно просто работает и помещает сертификат в раздел «Личный» хранилища сертификатов LocalMachine. Вы можете проверить его создание, выполнив:
Чтобы доверять ему, просто скопируйте это и вставьте в «Доверенные корневые центры сертификации» с помощью диспетчера сертификатов (убедитесь, что вы смотрите на сертификаты локального компьютера, а не на текущего пользователя!).
Если вы привяжетесь к этому сертификату в IIS, вы сможете нажать https://gandalf.dummy.dev/ и получить безопасное соединение без каких-либо предупреждений.
Последняя часть, использующая это в NodeJS, описана выше и в других ответах SO, поэтому я только добавлю, что в Windows легче работать с файлом pfx, который объединяет сертификат и закрытый ключ. Вы можете легко экспортировать pfx из диспетчера сертификатов, но это влияет на то, как вы его используете в NodeJS. При создании экземпляра Сервера с использованием модуля https, параметры, которые вы должны использовать (вместо key и cert), будут pfx и passphrase, как в:
источник
в Windows я сделал сертификат разработки iis доверенным с помощью MMC (start> run> mmc), затем добавил оснастку сертификата, выбрав «локальный компьютер» и приняв значения по умолчанию. После того, как этот снимок сертификата добавлен, разверните дерево сертификатов локального компьютера, чтобы найти в разделе «Личные», выберите сертификат localhost, щелкните правой кнопкой мыши> все задачи> экспорт. примите все значения по умолчанию в мастере экспорта.
После сохранения этого файла разверните доверенные сертификаты и начните импортировать только что экспортированный сертификат.
https://localhost
теперь доверяет Chrome без предупреждений о безопасности.Я использовал это руководство № 2 из блога MSDN, оператор также поделился ссылкой в своем вопросе о том, что также следует использовать MMC, но это сработало для меня. разрешение # 2
источник
Перейти к:
chrome://flags/
Включить: разрешить недействительные сертификаты для ресурсов, загруженных с localhost.
У вас нет зеленой безопасности, но вы всегда можете использовать https: // localhost в Chrome.
источник
Есть и другие аспекты.
Вы можете достичь TLS (некоторые продолжают говорить SSL) с помощью сертификата, самоподписанного или нет.
Чтобы иметь зеленую полосу для самозаверяющего сертификата, вам также необходимо стать центром сертификации (CA). Этот аспект отсутствует в большинстве ресурсов, которые я нашел на своем пути к достижению зеленой полосы в моей локальной настройке разработки. Стать центром сертификации так же просто, как создать сертификат.
Этот ресурс охватывает создание как сертификата CA, так и сертификата сервера, и в результате моя настройка показала зеленую полосу на localhost Chrome, Firefox и Edge: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58
Обратите внимание: в Chrome вам нужно добавить сертификат CA в доверенные центры.
источник
Если вам нужно пойти дальше подробных шагов @ alon, а также создать самоподписанный CA:
package.json
Используя localhost.cnf, как описано:
источник