具有私钥的Dart安全连接:SSLV3_ALERT_HANDSHAKE_FAILURE

时间:2019-06-03 10:12:59

标签: java flutter dart

我具有用于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项目。 如何找到飞镖代码的问题?

0 个答案:

没有答案