我具有用于TSL连接的站点证书('tls_connection_cert')和用于身份验证的专用证书('private_cert.p12')。每当我想在dart中建立连接时,都会收到错误SSLV3_ALERT_HANDSHAKE_FAILURE(tls_record.cc:586),而没有任何其他信息。 飞镖代码:
SecurityContext context = new SecurityContext(withTrustedRoots: true)
..setTrustedCertificates('tls_connection_cert')
..usePrivateKey('private_cert.p12', password: 'password');
await SecureSocket.connect(
"service_host", 9002, context: context, onBadCertificate: _onSelfSignedCertificate).then((socket) {
print('Connected to: '
'${socket.remoteAddress.address}:${socket.remotePort}');
socket.destroy();
});
我已经将他的服务与JAVA代码一起使用,该代码运行正常,没有错误。 Java代码已经使用3年了。 Java代码:
KeyManager[] privateCert; // private_cert.p12
TrustManager[] publicCert; // tls_connection_cert
SSLContext ssl = SSLContext.getInstance("TLS");
ssl.init(privateCert.getKeyManagers(), publicCert.getTrustManagers(), null);
SSLSocket socket = (SSLSocket)ssl.getSocketFactory().createSocket("service_host", 9002);
socket.startHandshake();
socket.close();
在线服务仅允许TLSv1.2。 Project是在Windows 10计算机上的Android Studio中构建的Flutter项目。 如何找到飞镖代码的问题?