Ошибка Node.js https: процедуры: PEM_read_bio: нет стартовой строки

Я сейчас возился с формой входа в систему с помощью node.js, я попытался создать ключ pem и csr, используя

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem 

Однако я получал ошибки для запуска узла server.js

Вот мой server.js

 var http = require('http'), express = require('express'), UserServer = require('./lib/user-server'); var https = require('https'); var fs = require('fs'); var options = { key: fs.readFileSync('./key.pem', 'utf8'), cert: fs.readFileSync('./csr.pem', 'utf8') }; var app = express(); app.configure(function(){ app.use(express.bodyParser()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); var httpserver = http.createServer(app).listen('3004', '127.0.0.1'); var https_server = https.createServer(options, app).listen('3005', '127.0.0.1'); UserServer.listen(https_server); 

Вот ошибка

 crypto.js:104 if (options.cert) c.context.setCert(options.cert); ^ Error: error:0906D06C:PEM routines:PEM_read_bio:no start line at Object.exports.createCredentials (crypto.js:104:31) at Server (tls.js:1107:28) at new Server (https.js:35:14) at Object.exports.createServer (https.js:54:10) 

Я попытался запустить

 openssl x509 -text -inform DER -in key.pem 

Это дает

 unable to load certificate 140735208206812:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319: 140735208206812:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=X509 

Я не совсем уверен, что означает ошибка, так как мой файл шифрования уже является .pem-файлом, поэтому любая помощь будет высоко оценена.

благодаря

Вероятно, вы используете неправильный файл сертификата, что вам нужно сделать, это создать самоподписанный сертификат, который можно выполнить следующим образом

 openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt 

затем используйте server.crt

  var options = { key: fs.readFileSync('./csr.pem', 'utf8'), cert: fs.readFileSync('./server.crt', 'utf8') }; 

Столкнулась с одной и той же проблемой. В моем случае я изменил параметр параметра cert на pfx и удалил кодировку utf8.

до:

 var options = { hostname : 'localhost', path : '/', method : 'POST', cert: fs.readFileSync(testCert, 'utf8'), passphrase:passphrase, agent:false, rejectUnauthorized:false }; 

после:

 var options = { hostname : 'localhost', path : '/', method : 'POST', pfx: fs.readFileSync(testCert), passphrase:passphrase, agent:false, rejectUnauthorized:false }; 

Я предполагаю, что это связано с тем, что ваш certs nodejs истек. Введите эту строку:
npm set registry http://registry.npmjs.org/
и после этого повторите попытку с установкой npm. Это фактически решило мою проблему.

Я удалил эту ошибку, написав следующий код

Открытый терминал

  1. openssl req -newkey rsa: 2048 -new -nodes -keyout key.pem -out csr.pem

  2. openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

Теперь используйте файл server.crt и key.pem

Файл app.js или server.js

 var https = require('https'); var https_options = { key: fs.readFileSync('key.pem', 'utf8'), cert: fs.readFileSync('server.crt', 'utf8') }; var server = https.createServer(https_options, app).listen(PORT); console.log('HTTPS Server listening on %s:%s', HOST, PORT); 

Он работает, но сертификат не доверяет. Вы можете просмотреть изображение в файле изображения.

введите описание изображения здесь

Если вы используете windows, вы должны убедиться, что в файле сертификата csr.pem и key.pem нет окончаний строк в стиле unix. Openssl будет генерировать файлы ключей с окончанием строки стиля unix. Вы можете преобразовать эти файлы в формат dos с помощью утилиты unix2dos или текстового редактора, например, блокнота ++

Создайте сертификат закрытого ключа и сервера с определенной датой истечения срока действия или с бесконечным (XXX) временем истечения срока действия и самостоятельно подпишите его.

$ openssl req -x509 -sha256 -newkey rsa: 2048 -keyout key.pem -out cert.pem -days XXX

$ Введите кодовую фразу секретного ключа … `

Тогда это сработает!

Если вы зарегистрируете

 var options = { key: fs.readFileSync('./key.pem', 'utf8'), cert: fs.readFileSync('./csr.pem', 'utf8') }; 

Возможно, вы заметили недопустимые символы из-за неправильного кодирования.

  • Внесение изменений в несколько записей на основе изменения одной записи с помощью SQL
  • Узел js ECONNRESET
  • Как установить NODE_ENV = производство в Windows?
  • Обработка ошибок с помощью streamов node.js
  • Node.js настраивает конфигурацию, специфичную для среды, которая будет использоваться с everyauth
  • Присвоение имени домена локальному хосту для среды разработки
  • Как установить зависимости одноранговых связей npm автоматически?
  • Запросить модуль, как правильно получить ударные символы?
  • nodejs mysql Ошибка: соединение потеряно Сервер закрыл соединение
  • Почему gulp.src не нравится передавать массив полных путей к файлам?
  • «Сообщение не удалось извлечь из реестра» при попытке установить любой модуль
  • Давайте будем гением компьютера.