start pem_read_bio node generate failed expecting error crypto 0906d06c node.js security login https pem

node.js - pem_read_bio - node js express https certificate



Node.js https pem error: rutinas: PEM_read_bio: no start line (6)

Si está utilizando Windows, debe asegurarse de que el archivo de certificado csr.pem y key.pem no tengan terminaciones de línea estilo Unix. Openssl generará los archivos de clave con terminaciones de línea de estilo Unix. Puede convertir estos archivos al formato dos con una utilidad como unix2dos o un editor de texto como notepad ++

Estoy jugando con el formulario de inicio de sesión ahora con node.js, intenté crear una clave de pem y csr usando

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

Sin embargo, he estado recibiendo errores para ejecutar el nodo server.js

Aquí está mi 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);

Aquí está el error

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)

Intenté correr

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

Da

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

No estoy exactamente seguro de lo que significa el error, ya que mi archivo de cifrado ya es archivo .pem, por lo que cualquier ayuda sería muy apreciada.

Gracias


Probablemente esté utilizando el archivo de certificado incorrecto, lo que debe hacer es generar un certificado autofirmado que se puede realizar de la siguiente manera

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

luego usa el servidor.crt

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


Genere la clave privada y el certificado del servidor con una fecha de vencimiento específica o con un tiempo de caducidad infinito (XXX) y autocríbalo.

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

$ Ingrese una contraseña de clave privada ... `

¡Entonces funcionará!


Si registra el

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

Es posible que observe que hay caracteres no válidos debido a una codificación incorrecta.


Estaba enfrentando el mismo problema En mi caso cambié el parámetro de opción de cert a pfx y eliminé la codificación utf8.

antes de:

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

después:

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


Supongo que esto se debe a que su certificado nodejs ha expirado. Escriba this line npm set registry http://registry.npmjs.org/ y luego intente de nuevo con npm install. Esto realmente resolvió mi problema.