2017-05-26 3 views
0

Knoten hält das Geben mir diesen Fehler, wenn ich versuchte, mich selbst signierten SSL-ZertifikatLaden OpenSSL-Zertifikat in den Knoten

_tls_common.js:67 
    c.context.setCert(options.cert); 
      ^

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Error (native) 
    at Object.createSecureContext (_tls_common.js:67:17) 
    at Object.TLSSocket._init.ssl.onclienthello.ssl.oncertcb.exports.connect (_tls_wrap.js:1017:46) 
    at Socket.<anonymous> (/usr/blinkchannelserver/bundle/programs/server/npm/node_modules/pg/lib/connection.js:106:23) 
    at Socket.g (events.js:260:16) 
    at emitOne (events.js:77:13) 
    at Socket.emit (events.js:169:7) 
    at readableAddChunk (_stream_readable.js:153:18) 
    at Socket.Readable.push (_stream_readable.js:111:10) 
    at TCP.onread (net.js:540:20) 

In welchem ​​Format zu lesen, wird diese in sein soll?

Auf meinem Server, habe ich eine Client-Schlüssel und csr von

openssl req -new -key ~/.postgresql/postgresql.key -out /tmp/postgresql.csr 

läuft ich meine Server-Schlüssel verwendet, um die csr in ein Zertifikat drehe Serverzertifikat mit nd Schlüssel

openssl x509 -req -in /tmp/postgresql.csr -CA server.cert -CAkey server.key -out /tmp/postgresql.cert -CAcreateserial 

Wenn ich versuche, verloren postgresql.cert bekomme ich den Fehler, der oben

Lauf x509:

gibt mir eine vernünftige Ausgabe:

-----BEGIN CERTIFICATE----- 
MIIDHDCCAgQCCQC8AZE7dSSPZDANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJH 
QjEPMA0GA1UEBwwGTG9uZG9uMR4wHAYDVQQKDBVEb3VnbGFzLVdoaXRlICYgR29z 
... 
-----END CERTIFICATE----- 
+0

Wenn Ihr CN *** 'CN = www.example.com' ***, dann ist es wahrscheinlich falsch. Hostnamen gehen immer in das * SAN *. Wenn es im * CN * vorhanden ist, muss es auch im * SAN * vorhanden sein (in diesem Fall müssen Sie es zweimal auflisten). Weitere Regeln und Gründe finden Sie unter [Wie unterschreiben Sie eine Zertifikatsignierungsanforderung mit Ihrer Zertifizierungsstelle] (http://stackoverflow.com/a/21340898/608639) und [So erstellen Sie ein selbstsigniertes Zertifikat mit openssl?] (http://stackoverflow.com/q/10175812/608639) Sie müssen das selbstsignierte Zertifikat auch im entsprechenden Trust Store speichern. – jww

Antwort

0

Dies geschieht in der Regel, wenn die Datei mit Nicht-Unix-Zeilenenden codiert wird. Sie können die Datei öffnen, und am Ende der Zeile wird ein seltsames Zeichen angezeigt, wie zum Beispiel '^ M'.

Konvertieren der Datei in ein Unix-Format OpenSSL wird damit umgehen können. Probieren Sie einige 'sed'-Befehle ausführen (abhängig von der Codierung) oder ein spezielles Tool wie 'dos2unix'

sed 's/^M$//' infile.txt > outfile.txt 

sed 's/\r$//' infile.txt > outfile.txt 
+0

PEM ist in [RFC 1421, Privacy Enhancement für Internet E-Mail] (https://tools.ietf.org/html/rfc1421) standardisiert. Der Standard ruft CR-LF End-of-Line in Abschnitt 4.3.1 (S. 10) auf: * "Textzeilen, begrenzt durch das Zeichenpaar , dürfen nicht länger als 1000 Zeichen sein" *. Zwei andere RFCs zu dieser Zeit, SMTP und FTP, verwendeten dasselbe End-of-Line. Wenn Node.js das Newline-Paar nicht verarbeiten kann, handelt es sich wahrscheinlich um einen Fehler in Node.js. – jww

Verwandte Themen