Nœud.js https pem erreur: routines:PEM lire la bio:pas de ligne de départ
je joue avec le formulaire de connexion en ce moment avec le noeud.js, j'ai essayé de créer une clé pem et csr en utilisant
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
cependant j'ai eu des erreurs pour exécuter le serveur de noeuds.js
Voici mon serveur.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);
Voici l'erreur
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)
j'ai essayé de courir
openssl x509 -text -inform DER -in key.pem
donne
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
Je ne suis pas exactement sûr de ce que signifie l'erreur comme mon fichier de cryptage est .pem fichier déjà, donc toute aide serait beaucoup apprécier.
Merci
7 réponses
vous utilisez probablement le mauvais fichier de certificat, ce que vous devez faire est de générer un certificat auto signé qui peut être fait comme suit
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
alors utilisez le serveur.crt
var options = {
key: fs.readFileSync('./csr.pem', 'utf8'),
cert: fs.readFileSync('./server.crt', 'utf8')
};
était confronté au même problème dans mon cas j'ai changé le paramètre d'option de cert En pfx & supprimé l'encodage utf8.
avant:
var options = {
hostname : 'localhost',
path : '/',
method : 'POST',
cert: fs.readFileSync(testCert, 'utf8'),
passphrase:passphrase,
agent:false,
rejectUnauthorized:false
};
après:
var options = {
hostname : 'localhost',
path : '/',
method : 'POST',
pfx: fs.readFileSync(testCert),
passphrase:passphrase,
agent:false,
rejectUnauthorized:false
};
je suppose que c'est parce que votre certificat de nodejs a expiré. Tapez cette ligne : npm set registry http://registry.npmjs.org/
et après cela, réessayez avec npm install . En fait, cela a résolu mon problème.
j'ai supprimé cette erreur en écrivant le code suivant
Ouvrir Un Terminal
openssl req -newkey rsa:2048 -nouvelle -nœuds -keyout clé.pem -out de la rse.pem
openssl x509 -req -days 365 -en matière de rse.la clé pem-signkey.pem -out server.crt
maintenant, utilisez le serveur.crt et de la clé.fichier pem
app.js ou d'un serveur.fichier 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);
cela fonctionne mais le le certificat n'est pas approuvé. Vous pouvez visualiser l'image dans le fichier image.
si vous utilisez windows, vous devez vous assurer que le fichier de certificat csr.pem et de la clé.pem n'a pas de fin de ligne de style unix. Openssl générera les fichiers clés avec les fins de ligne de style unix. Vous pouvez convertir ces fichiers au format dos en utilisant un utilitaire comme unix2dos ou un éditeur de texte comme notepad++
Générer la clé privée et le certificat du serveur avec la date d'expiration spécifique ou avec le temps d'expiration infini(XXX) et auto-signer.
$ openssl req-x509-sha256-newkey rsa: 2048-keyout key.PEM-out cert.PEM-days XXX!--1-->
$ entrer une phrase de passe de clé privée...`
alors ça va marcher!
Si vous vous connectez à l'
var options = {
key: fs.readFileSync('./key.pem', 'utf8'),
cert: fs.readFileSync('./csr.pem', 'utf8')
};
vous pourriez remarquer qu'il y a des caractères invalides en raison d'un codage inadéquat.