Node.js самоподписанный сертификат по-прежнему отображается как "не доверенный" в моем браузере - PullRequest
0 голосов
/ 09 апреля 2020

Я использую сервер Node.js и пытаюсь разместить этот сервер локально и не получаю никаких ошибок SSL.

Вот что я сделал для создания сертификата. Я открыл терминал в коде Visual Studio и набрал следующее:

$ openssl req -nodes -new -x509 -keyout server.key -out server.cert

. В моем текущем каталоге были созданы файлы .cert и .key.

Далее в моем приложении. js файл, я добавил это:

https.createServer({
  key: fs.readFileSync('./server.key'),
  cert: fs.readFileSync('./server.cert')//,
  //passphrase: ''
}, app)
.listen(3000);

Затем я запустил команду node app.js в окне моего терминала, чтобы запустить сервер Node.js.

Затем я посетил https://localhost:3000/ и я получаю следующее - извещение «Не безопасно» - вот от чего я пытаюсь избавиться:

enter image description here

В этот момент я сделал несколько Погуглил и увидел, где может быть полезно экспортировать этот сертификат и импортировать напрямую в Chrome. Я сделал это, нажав на кнопку «Незащищенный» и щелкнув по сертификату:

enter image description here

Затем щелкнув Подробности и «Копировать в файл»:

enter image description here

Затем я нажал Далее на следующем экране и выбрал DER encoded binary X.509 (.CER):

enter image description here

Я нажал Next и дал экспортированному сертификату имя serverMike.cer:

enter image description here

Затем я нажал Next и Fini sh:

enter image description here

Экспорт успешно выполнен:

enter image description here

Наконец, я go импортирую этот экспортированный сертификат в настройках Chrome и выбираю "Доверенные Root Центры сертификации", где разместить этот сертификат:

enter image description here

Затем я нажал Next и Fini sh. Я закрыл из Chrome и открыл его снова, посетил https://localhost: 3000 и получил то же самое сообщение «Не безопасно». Я что-то не так делаю?

1 Ответ

0 голосов
/ 09 апреля 2020

Шаг 0: это не вопрос программирования

Шаг 1: если вы явно не подавили ошибку, вы должны были увидеть ошибку «Небезопасно» страница ранее сказано NET :: ERR_CERT_AUTHORITY_INVALID и теперь говорит NET :: ERR_CERT_COMMON_NAME_INVALID, и если вы нажмете Дополнительно, он скажет: «Этот сервер не может доказать, что это [домен]; его сертификат безопасности не указывает альтернативные имена субъекта.»

Шаг 2: см.
https://serverfault.com/questions/845766/generating-a-self-signed-cert-with-openssl-that-works-in-chrome-58
https://serverfault.com/questions/880804/can-not-get-rid-of-neterr-cert-common-name-invalid-error-in-chrome-with-self
https://security.stackexchange.com/questions/89319/creating-my-own-ca-for-an-intranet https://security.stackexchange.com/questions/172440/generate-x509-err-cert-common-name-invalid
https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-the-command-line
https://security.stackexchange.com/questions/113484/followup-to-one-liner-to-create-cert-request-with-san
Chrome принять самозаверяющий сертификат localhost

BTW : поскольку это локально, вам не нужно экспортировать сертификат из браузера перед его импортом. Если вы создаете сертификат из openssl req ... -x509 ... с расширением .cer или .crt, или переименовываете или копируете его таким образом, вы можете просто дважды щелкнуть и затем импортировать в TrustedRoots. Или для любого имени вы можете запустить MM C и выбрать Сертификаты, или просто напрямую запустить certmgr.ms c и импортировать оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...