Мы приобрели доменное имя и SSL-сертификат на godaddy, но наш сервер не на GoDaddy. МЫ запускаем Lampp и NodeJS на нашем сервере, и мы пытаемся настроить SSL для обоих. С Лампой проблем нет. закрытый ключ и сертификат от godaddy работают. но когда я пробую те же файлы с NodeJS. это терпит неудачу.
Это мой js-скрипт:
ssl = {
key: fs.readFileSync("./key.pem",'utf8'),
cert: fs.readFileSync("./cert.crt",'utf8'),
ca: [fs.readFileSync('./g1.crt','utf8'),
fs.readFileSync('./g2.crt','utf8'), fs.readFileSync('./g3.crt','utf8')]
};
server = require('https').createServer(ssl, app);
Это ошибка
_tls_common.js:104
c.context.setKey(options.key, options.passphrase);
^
Error: error:0909006C:PEM routines:get_name:no start line
После некоторого поиска в Google я попробовал несколько решений: добавление «utf8», разделение пакета gd, использование nodepad ++ для исправления кода. Ни один из них не помог.
Однако nodejs может использовать мои самозаверяющие ключи и файлы сертификатов. Поэтому я хотел бы спросить. Я неправильно сгенерировал ключ? Должен ли я вручную сгенерировать закрытый ключ/CSR локально и запросить новый сертификат на GoDaddy? или что-то не так в моем коде?
Если я ошибаюсь, то ошибка такая Error: error:0909006C:PEM routines:get_name:no start line
Это сообщение об ошибке может означать, что эти файлы неверны, повреждены или были запрошены для другого Среды ОС. Итак, у нас есть несколько вариантов.
let yourKey = fs.readFileSync('./folderOne/folderTwo/initial.key').toString();
let yourCertificate = fs.readFileSync('./folderOne/folderTwo/certificate.crt').toString();
var credentials = { key: yourKey, cert: yourCertificate };
Важно. Вам нужен только файл .crt и закрытый ключ.
Спасибо, используйте вариант 2
Там действительно написано
TongueEM
, а неPEM
? Это действительно странно. Убедитесь, что ваши файлы на самом деле имеют формат PEM: строка -----BEGIN (тип)-----, некоторые строки base64 шириной не более 76 символов и -----END (тип)- ---- линия. Строки должны заканчиваться LF или CRLF. Убедитесь, что тип файла закрытого ключа является допустимым типом закрытого ключа. Если эти файлы находятся или находились в Windows, убедитесь, что они НЕ имеют «BOM» (знак порядка байтов) в начале. (Используйте шестнадцатеричный редактор или аналогичный; спецификация невидима в обычных текстовых редакторах, таких как блокнот.)