gpt4 book ai didi

java - 使用已知证书的 SSL 服务器套接字和握手

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:02 27 4
gpt4 key购买 nike

我是 SSl 服务器套接字的新手。我要做的就是通过 SSL 读取数据。我的应用程序在端口 8000 上监听。请给我一些关于如何执行此操作的步骤。当我有证书(在我的光盘上)时,如何建立 SSL 服务器套接字并从客户端读取?

这是我的步骤

1) 从文件中读取 server.crt 并生成 X509Certificate(具有公钥和私钥)2) 获取JKS keystore实例

3) 获取上下文实例

4) 通过端口 (8000) 创建服务器套接字

InputStream in = new DataInputStream(new FileInputStream(new File("server.crt")));
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(null, null);

CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(in);
in.close();

ks.setCertificateEntry("dts", cert);

char[] newpass = "password".toCharArray();
String name = "mykeystore.ks";
FileOutputStream output = new FileOutputStream(name);
ks.store(output, newpass);

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "password".toCharArray());




try{

System.setProperty("javax.net.ssl.keyStore","mykeystore.ks");
System.setProperty("javax.net.ssl.keyStorePassword","password");
System.setProperty("javax.net.debug","all");



SSLContext context = SSLContext.getInstance("TLSv1.2");
context.init(kmf.getKeyManagers(), null, null);
SSLServerSocketFactory sslServerSocketfactory = context.getServerSocketFactory();
SSLServerSocket sslServerSocket = (SSLServerSocket)sslServerSocketfactory.createServerSocket(8000);
SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept();


InputStream dataIN = sslSocket.getInputStream();

byte[] hello = new byte[20];

dataIN.read(hello);
System.out.println(new String(hello));

dataIN.close();

} catch (IOException e){
e.printStackTrace();
}

最佳答案

我得到了我的问题的答案,我研究了如何使用自签名证书设置我自己的 keystore 。这种方式对我有帮助。

请联系我以获得详细的解决方案。

关于java - 使用已知证书的 SSL 服务器套接字和握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382487/

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