SSL套接字 - Java和证书?

时间:2017-02-01 13:24:54

标签: java android sockets ssl

我正在尝试在Android App和Python API之间实现SSL套接字。

以下代码......

SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
Socket s = ssf.createSocket("10.0.2.2", 5001);
DataOutputStream myDataOut = new DataOutputStream(s.getOutputStream());
myDataOut.writeUTF("Hello Server");
myDataOut.flush();
myDataOut.close();
s.close();

无法正常工作:

590.0750 - Establishing connection to ('127.0.0.1', 50888)
590.0970 - Error while connecting
590.0970 - Error information: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl.c:590)

我相信它并不是因为我没有指定证书。 请参阅客户端的Python工作示例:

import socket, ssl, pprint

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

ssl_sock = ssl.wrap_socket(s,
                           ca_certs="server.crt",
                           cert_reqs=ssl.CERT_REQUIRED)

ssl_sock.connect(('localhost', 5001))

print repr(ssl_sock.getpeername())
print ssl_sock.cipher()
print pprint.pformat(ssl_sock.getpeercert())

ssl_sock.write("Hello from the client...")

如何像在Python中一样用Java指定证书?

1 个答案:

答案 0 :(得分:1)

我认为你理解正确,这个answer对于一个相关的问题可能对你很有意思。它描述了指定认证的方式。