Встановіть самопідписаний сертифікат SSL (для використання в Node.js)


1

Я намагався створити самопідписаний сертифікат, використовувати його на простому сервері Node.js та встановити його в систему довіреній системі. Однак щось не працює, зокрема "встановлення SSL-сертифіката", тому ось мої кроки:

  1. Створіть сертифікат за допомогою:
    openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
    Сертифікат повинен бути a .pem, оскільки httpsмодуль Node.js вимагає такого.

  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до системних сертифікатів, клацнув правою кнопкою миші та відкрив інформацію, а потім міг змінити її на довіру.

Що я зробив неправильно?


Що саме означає "не працює"?
nKn

@nKn Я щойно тестував це на Safari і curl, він, здається, працює нормально (без жодних попереджень), але Chrome все одно говорить: NET :: ERR_CERT_COMMON_NAME_INVALID '
Zocker3333,

Отже, яка загальна назва предмета у вашій програмі? І чи відповідає ім'я хоста в URL-адресі, яку ви вводите в Chrome?
Spiff

Також переконайтесь, що ім'я є не тільки некваліфікованим іменем, наприклад "ім'я хоста", але замість цього FQDN, як "ім'я хоста.example.com".
Steffen Ullrich

Ну, я хотів би використовувати сертифікат localhost, оскільки він працює в Safari, але не в Firefox та Chrome, чи може хтось давати вказівки, як створити самопідписаний сертифікат localhostі встановити його в потрібному місці, щоб усі браузери йому довіряли? Сертифікат повинен бути таким, .pemяк було сказано вище.
Zocker3333
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.