Правильно установите самозаверяющий сертификат SSL (для использования в Node.js)

1

Я пытался создать самозаверяющий сертификат, использовать его на простом сервере Node.js и установить его в систему, чтобы система была доверенной. Однако что-то не работает, в частности, «установка SSL-сертификата», так что вот мои шаги:

  1. Создать сертификат, с:
    openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
    Сертификат должен быть .pem, так как Node.js ' https Модуль требует один.

  2. Напишите серверное приложение:

    var https = require('https');  
    var fs = require('fs');
    
    var options = {
      key: fs.readFileSync('key.pem'),
      cert: fs.readFileSync('cert.pem')
    };
    
    https.createServer(options, function (req, res) {
      res.writeHead(200);
      res.end("hello world\n");
    }).listen(8000);
    
  3. Установите сертификат (OS X): Из того, что я прочитал в Интернете, я добавил cert.pem к системным сертификатам, щелкнул правой кнопкой мыши на нем и открыл информацию, а затем мог изменить ее на доверенную.

Что я сделал не так?

Zocker3333
источник
Что значит «не работает» точно?
nKn
@nKn Я только что протестировал его с Safari и curl, кажется, что он отлично работает там (без каких-либо предупреждений), но Chrome все еще говорит 'NET :: ERR_CERT_COMMON_NAME_INVALID'
Zocker3333
Итак, каково общее имя субъекта в вашем сертификате? И соответствует ли оно имени хоста в URL, который вы вводите в Chrome?
Spiff
Убедитесь также, что это имя не только безусловное имя, например «имя хоста», но и полное доменное имя, например «имя_хоста.example.com».
Steffen Ullrich
Ну, я хотел бы использовать сертификат для localhostТак как он работает в Safari, но не в Firefox и Chrome, кто-то может дать инструкции, как создать самозаверяющий сертификат для localhost и установить его в нужном месте, чтобы все браузеры доверяли ему? Сертификат должен быть .pem как уже упоминалось выше.
Zocker3333