Node.js https pem erreur: routines:PEM_read_bio:pas de ligne de départ
Je suis déconner avec le formulaire de connexion en ce moment avec node.js, j'ai essayé de créer une clé pem et de la rse à l'aide de
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
Cependant j'ai été faire des erreurs pour le nœud en cours d'exécution server.js
Voici mon 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);
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
Il 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 fait l'erreur de dire que mon fichier de cryptage est .fichier pem déjà, de sorte que toute aide serait grandement appréciée.
Grâce
- Avez-vous corriger cette erreur?
Vous devez vous connecter pour publier un commentaire.
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
puis utilisez le serveur.crt
./csr.pem
est le bon fichier pourkey
option? Il me faisait la même erreur, mais lorsque j'ai changé la clé de./key.pem
, tout a fonctionné. Me semble que la dernière édition qui ont été apportées à l'original de votre réponse est fausse.J'ai enlevé cette erreur par écrire 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.pem -signkey clé.pem -out server.crt
Maintenant utiliser le serveur.crt et de la clé.fichier pem
app.js ou server.js fichier
Il fonctionne, mais le certificat n'est pas approuvé. Vous pouvez afficher l'image dans un fichier d'image.
A été confronté au même problème Dans mon cas, j'ai changé le paramètre d'option de cert pour pfx & suppression de l'encodage utf8.
avant:
après:
wrong tag
ouheader too long
erreurs — ce qui peut être mauvais?Pour moi, le problèmes est que j'avais la clé et cert échangé.
MODIFIER
Exemple plus Complet (Peut-être pas complètement fonctionnelle)
Server.js
J'ai créé un repo github, y compris une version plus complète du code ci-dessus, si quelqu'un est intéressé: https://github.com/snowballrandom/Memcached-Auth
openssl req -newkey rsa:2048 -new -nodes -keyout privkey.pem -out fullchain.pem
, etopenssl x509 -req -days 365 -in fullchain.pem -signkey privkey.pem -out chain.pem
Je suppose que c'est parce que votre nodejs cert a expiré. Tapez cette ligne :
npm set registry http://registry.npmjs.org/
et après que d'essayer de nouveau avec npm install . En fait, cela a résolu mon problème.
Fait, je viens eu ce même message d'erreur.
Le problème est que j'avais
key
etcert
fichiers échangés dans l'objet de configuration.Si vous utilisez windows, vous devez assurez-vous que le fichier de certificat de rse.pem et de la clé.pem n'ont pas de style unix, les fins de ligne. Openssl va générer les fichiers de la clé avec le style unix fins de ligne. Vous pouvez convertir ces fichiers au format ms-dos à l'aide d'un utilitaire comme unix2dos ou un éditeur de texte comme notepad++
Si vous vous connectez le
Vous remarquerez peut-être il y a des caractères non valides en raison d'un mauvais encodage.
Pour moi c'était juste des fichiers corrompus. J'ai copié le contenu à partir de GitHub PullRequest page web et je suppose que j'ai ajouté un espace quelque part ou quoi que... une fois que j'ai attrapé le raw chose et remplacé le fichier, il a travaillé.
Pour moi, après avoir essayé toutes les solutions ci-dessus, il a fini par être un problème lié à l'encodage. De manière concise, ma clé a été codé à l'aide de 'UTF-8 avec BOM'. Il doit être en UTF-8 à la place.
À fixer, au moins à l'aide de VS Code de suivre ces étapes:
Je suppose que vous pouvez utiliser d'autres éditeurs en charge l'enregistrement avec le bon encodage.
Source: erreur:0906d06c:pem routines:pem_read_bio:pas de ligne de départ, lors de l'importation de godaddy certificat SSL
P. D je n'ai pas besoin de définir la
encoding
àutf-8
option lors du chargement du fichier à l'aide de lafs.readFileSync
fonction.Espère que cela aide quelqu'un!
Générer la clé privée et le certificat de serveur spécifique date d'expiration, ou avec une infinie(XXX) de l'expiration du temps et de auto de le signer.
Ensuite, il sera!