2016-08-11 1 views
1

Ich möchte einen einfachen sicheren Client/Server mit TLS erstellen. Ich habe Anweisungen auf dem official doc folgen. Aber ich weiß nicht, wie man ein selbstsigniertes Zertifikat mit openssl erstellt (funktioniert nicht mit mir).Knoten js, einfach tls Client/Server

Hier Code:

server.js

const tls = require('tls'); 
const fs = require('fs'); 

const options = { 
    key: fs.readFileSync('server-key.pem'), 
    cert: fs.readFileSync('server-cert.pem'), 

    // This is necessary only if using the client certificate authentication. 
    requestCert: true, 

    // This is necessary only if the client uses the self-signed certificate. 
    ca: [ fs.readFileSync('client-cert.pem') ] 
}; 

const server = tls.createServer(options, (socket) => { 
    console.log('server connected', 
       socket.authorized ? 'authorized' : 'unauthorized'); 
    socket.write('welcome!\n'); 
    socket.setEncoding('utf8'); 
    socket.pipe(socket); 
}); 
server.listen(8000,() => { 
    console.log('server bound'); 
}); 

Client.js:

const tls = require('tls'); 
const fs = require('fs'); 

const options = { 
    // Necessary only if using the client certificate authentication 
    key: fs.readFileSync('client-key.pem'), 
    cert: fs.readFileSync('client-cert.pem'), 

    // Necessary only if the server uses the self-signed certificate 
    ca: [ fs.readFileSync('server-cert.pem') ] 
}; 

const socket = tls.connect(8000, options,() => { 
    console.log('client connected', 
       socket.authorized ? 'authorized' : 'unauthorized'); 
    process.stdin.pipe(socket); 
    process.stdin.resume(); 
}); 
socket.setEncoding('utf8'); 
socket.on('data', (data) => { 
    console.log(data); 
}); 
socket.on('end',() => { 
    server.close(); 
}); 

Ich weiß nicht, warum zwei verschiedene Schlüsselpaar verwenden:

  • client-key.pem
  • Client-cert.pem

und:

  • Server-key.pem
  • Server-cert.pem

Wer kann mir exmplain? Für die Arbeit in selbstsigniert.

Mit freundlichen Grüßen,

Yoratheon

Antwort