Ошибка конфигурации Node.js HTTPS — нет общих алгоритмов шифрования

Я видел другие подобные вопросы, но не решает мою проблему. Я создал свой самозаверяющий сертификат TLS (openSSL), но, похоже, он не работает на моем сервере NodeJS.

Инструкции по созданию SSL

openssl req -newkey rsa:2048 -keyout key.pem -x509 -days 365 -out certificate.pem

openssl x509 -text -noout -in certificate.pem

openssl pkcs12 -inkey key.pem -in certificate.pem -export -out certificate.p12

openssl pkcs12 -in certificate.p12 -noout -info  // verify certificate

Итак, в конце у меня есть .p12, также известный как сертификат типа PFX. Ниже приведен мой код Node.js:

    // ------- Start HTTPS configuration ----------------

const options = {

    pfs: fs.readFileSync('./server/security-certificate/certificate.p12'),     
    passphrase: 'secrete2'
};
https.createServer(options, app).listen(8443);


    // -------- End HTTPS configuration -----------------

    // Also listen for HTTP 
var port = 8000;
app.listen(port, function(){
    console.log('running at localhost: '+port);
});

Вот вывод, когда я запускаю команду curl, HTTP-запрос обслуживается правильно, проблема возникает только с HTTPS:

Вывод при тестировании на той же машине

Более того, если я сделаю это:

export CURL_CA_BUNDLE=/var/www/html/node_app/server/security-certificate/cert.p12

Затем я получаю следующую ошибку: curl: (77) Problem with the SSL CA cert (path? access rights?)



Если я пытаюсь получить доступ в браузере с помощью HTTPS и порта, браузер говорит, что не может загрузить страницу.

Справочные ссылки, по которым я следовал: Node.js HTTPS:

https://nodejs.org/dist/latest-v8.x/docs/api/https.html#https_https_createserver_options_requestlistener

Я использую AWS RedHat Linux


person Nah    schedule 05.05.2018    source источник
comment
stackoverflow.com/questions/35478215/   -  person Muhammad Usman    schedule 06.05.2018
comment
Это другое дело   -  person Nah    schedule 06.05.2018


Ответы (1)


Пока не знаю решения описанной выше проблемы, связанной с моим сертификатом пакета .p12 (используется в моей конфигурации Node.js).

Однако я заметил, что когда я изменил код и попытался использовать сертификат .pem, он правильно работал с командой curl -k <MY-URL>.

const options = {
    cert: fs.readFileSync('./server/security-certificate/cert.pem'),    
    key: fs.readFileSync('./server/security-certificate/key.pem'),      

    //pfs: fs.readFileSync('./server/security-certificate/cert.p12'),   // didn't work

    passphrase: 'secrete'
};

https.createServer(options, app).listen(8443);

Если кто-то знает лучшее решение/ответ, напишите об этом. Пока что я не уверен, почему сертификат .p12 не работает. Должен ли я переименовать его в .pfx (в чем разница и эффект)?

person Nah    schedule 10.05.2018