Я пытаюсь использовать свой купленный сертификат SSL в Node.js - этот сертификат работает отлично в Nginx и Apache без любых ошибок.
Однако, когда я пытаюсь использовать его в Node.js, я получаю эту ошибку:
tls.js:1124
throw new Error('Missing PFX or certificate + private key.');
^
Error: Missing PFX or certificate + private key.
at Server (tls.js:1124:11)
at new Server (https.js:35:14)
at Object.exports.createServer (https.js:54:10)
at Object.<anonymous> (/usr/home/server.js:9:20)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
Вот мой код server.js:
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('key.key'),
cert: fs.readFileSync('cert.crt')
};
var server = https.createServer(function(req, res) {
res.writeHead(200);
res.end('Hello Http\r\n');
});
server.listen(8080, '127.0.0.1');
Я заметил, что некоторые примеры требуют преобразования .crt и .key к .pem формату. Я могу преобразовать .crt файл, но преобразование .key файла дает мне эту ошибку:
[localhost ~]$ openssl x509 -in key.key -out key.pem -outform PEM
unable to load certificate
34379118248:error:0906D06C:PEM routines:PEM_read_bio:no start line:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/pem/pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Я в потере на том, что сделать затем. Как я упомянул ранее, этот сертификат SSL в настоящее время устанавливается и работает на Nginx и Apache без любых проблем.
Какие-либо идеи, что я могу попробовать затем?
** РЕШЕННЫЙ **
Я просто должен был изменить 'createServer' строку на:
var server = https.createServer(options, function(req, res)
Закрытый ключ находится в формате RSA, а не X509. В команде преобразования openssl используйте "rsa" вместо "x509".
.