Ich erhalte diesen FehlerBuchse [SSL: CERTIFICATE_VERIFY_FAILED] (_ssl.c: 590) von Client.py zu Knoten Server.js
File "C:\Python27\lib\ssl.py", line 844, in connect
self._real_connect(addr, False)
File "C:\Python27\lib\ssl.py", line 835, in _real_connect
self.do_handshake()
File "C:\Python27\lib\ssl.py", line 808, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
Ich versuche, eine sichere Verbindung (ssl.socket) zu etablieren zwischen einem Python-Client und einem node.js-Server und ich nahm den obigen Fehler. Ich weiß nicht, was fehlt oder was meine Schuld ist. Hier ist meine Quellcode sowohl für Python-Client und für node.js Server
Server Sockel in Node.js:
var _HOST = '192.168.1.136';
var _PORT = 1337;
var _address;
const tls = require('tls');
const fs = require('fs');
const options = {
// These are necessary only if using the client certificate authentication
key: fs.readFileSync('./SSL_TLS/ServerCakey.pem'),
cert: fs.readFileSync('./SSL_TLS/Server-cert.pem'),
requestCert: true
};
var server = tls.createServer(options, (socket) => {
//const ProtocolEmmitter = new BasicProtocolEmmitter();
socket.on('connect', (e) => {
console.log('client connected ' +
socket.remoteAddress + ':' +
socket.remotePort);
console.log('server connected',
socket.authorized ? 'authorized' : 'unauthorized');
});
socket.on('data', function(data) {
console.log('clients says' + ': ' + data);
});
socket.on('error', function(data) {
console.log('client on error', data);
});
socket.on('close', (e) => {
console.log('client disconnected');
socket.end;
setTimeout(() => {
server.close();
server.listen(_PORT, _HOST,() => {
_address = server.address();
console.log('opened server on %j', _address);
console.log(' Server listening on %j ', _HOST, ':', _PORT);
});
}, 10000);
});
});
und hier ist mein Client.py Sockel: (Ich verwende Python 2.7.11
)class SSLSocket:
def __init__(self):
Context = self.__loadContext()
self._SSL_Sock = Context.wrap_socket(socket.socket(socket.AF_INET),
server_hostname=host)
self._SSL_Sock.connect((host, port))
def __loadContext(self):
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_REQUIRED
context.check_hostname = True
context.load_verify_locations("..Path/Client.crt")
return context
ich vergaß zu erwähnen, dass ich mit Erfolg schaffen die client.crt und ich bestätigen es mit Erfolg
`openssl x509 -req -days 365 -in server.csr -signkey server.key -out client.crt`
Signature Ok