java - SSL 套接字 - Java 和证书?

标签 java android sockets ssl

我正在尝试在 Android 应用程序和 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 中指定证书?

最佳答案

假设我没看错,这个answer一个相关的问题可能对你来说很有趣。它描述了指定认证的方式。

关于java - SSL 套接字 - Java 和证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980951/

相关文章:

java - Web.xml 安全约束不起作用

android - ListView中的隐藏字段传递一个变量

android - 改变安卓:updatePeriodMillis programmatically

android - serveo.net 服务安全且私密吗?

c++ - 为什么 addr 变量类型转换?

java - 简单的 Spring Java @Configuration 到 @Autowire 而不使用 @Bean

java - 在 HashMap 中使用 keySet() 方法

java - 如何将二维字符串数组保存到 sql 数据库中?

c - send() 和 receive() 函数

node.js - 如何将事件的 WebSocket 传递给 Node.js 中的集群线程?