2017-05-13 4 views
1

Ich kann scheinen, keine Dokumentation für SEQUELIZE.JS auf zu finden, wie man eine CA.crt benutzt, um Verbindung zu meiner Datenbank zu ermöglichen, die auf einem Fernbediener sitzt.Wie man sich über SSL verbindet, um fortzufahren DB

ich meine, es ist etwas in den Optionen, aber ich kann nicht scheinen,

ich versucht habe

{ 
'ssl': true 
'dialectOptions':{ 
    ssl: { 
    ca: 'path/to/ca' 
    } 
}  
} 

, um herauszufinden, und ein paar andere Dinge, aber nichts scheint zu funktionieren für mich.

Kann mir jemand helfen?

Edit:

Hier ist ein Fehler, den ich bekommen, wenn das Ding ca mit

error connecting to db { Error: unable to verify the first certificate 
at TLSSocket.<anonymous> 
+0

Zusätzlich zu meiner unten, nur eine kurze Bemerkung. Sie müssen alle 3 Komponenten, 2 Zertifikate und Schlüsseldatei in irgendeiner Form übergeben. – Mark

Antwort

1

Wie Sie die Backend-DB der Wahl nicht erwähnt, werde ich eine mysql Probe geben und wie ich Ich schlage vor, Sie gehen darüber.

Zunächst bestätigt die Verbindung der dialect direkt mit, so dass für mysql2 Versorgung Variablen wie nötig:

const connection = mysql.createConnection({ 
    host: dbVars.host, 
    user: dbVars.user, 
    database: dbVars.database, 
    password: dbVars.password, 
    ssl: { 
    key: cKey, 
    cert: cCert, 
    ca: cCA 
    } 
}); 

Sobald die Verbindung bestätigt wird, sie bewegt, wie zum Sequelize:

const sequelize = new Sequelize(dbVars.database, dbVars.user, dbVars.password, { 
    host: dbVars.host, 
    dialect: 'mysql', 
    dialectOptions: { 
    ssl: { 
     key: cKey, 
     cert: cCert, 
     ca: cCA 
    } 
    } 
}); 

Hinweis: das korrekte Laden der Zertifikate war eine Lernkurve und erforderte eine direkte import unter Verwendung einer raw-loader. Beispiel:

import cKey from 'raw-loader!../certs/client-key.pem'; 
+0

'fs.fileReadSync' funktioniert genauso gut für mich zum Lesen der .pem-Dateien. – Max

Verwandte Themen