gpt4 book ai didi

java - 带证书的 SSL 连接

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:01 24 4
gpt4 key购买 nike

我想将以下 Python 代码复制到 Java 中的等效代码:

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', 10023))
ssl_sock.write("boo!")

if False:
data = ssl_sock.read()
ssl_sock.close()

我想出了下面的代码(它不工作)但我还有两个问题:

abstract class Connection extends AsyncTask<String, Void, String> {


boolean Connect(){
try
{
SSLSocketFactory factory=(SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket mySSLSocket=(SSLSocket) factory.createSocket("localhost", 10023);

DataOutputStream myOutPutStream = new DataOutputStream(mySSLSocket.getOutputStream());
myOutPutStream.writeBytes("Hello World!");

myOutPutStream.close();
mySSLSocket.close();

return true;

}
catch(Exception e)
{
return false;
}

}

}

通过执行代码,我得到以下 Java 错误:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
  1. 在我的 Android 应用程序项目 (Android Studio) 中的什么位置保存证书?

  2. 以下 Java 代码的等价物是什么?

    ssl_sock = ssl.wrap_socket(s, ca_certs="服务器.crt", cert_reqs=ssl.CERT_REQUIRED)

最佳答案

尝试 -Djavax.net.ssl.trustStore=/path/to/keystore,其中“/path/to/keystore”是备用 keystore 的绝对文件路径。

这需要是运行代码/项目的 VM 选项。

关于java - 带证书的 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41661920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com