【发布时间】:2023-03-14 04:00:01
【问题描述】:
我正在开发一个 Java 项目,我应该在该项目中在服务器端实现 SSL 协议。这是我第一次在我的应用程序中使用 SSL,所以我阅读了很多关于 SSL/TLS 的内容,现在我想用 Java 实现一些东西。我将使用 JSSE API 来实现这个过程:
-
客户端将连接到我
-
我将使用我的公钥证书进行身份验证。我的意思是我会给客户端发一个公钥和对应的证书
-
客户端使用我的公钥和 RSA 算法加密密钥并将其发送给我
我已经将私钥和证书保存在我计算机上的密钥库中。所以我很犹豫如何从我的 Java 应用程序访问它们。我不知道,访问它们的步骤是什么,因为这是我第一次处理这种东西
我将使用SSLEngine。所以我应该先用这段代码初始化一个SSLContext:
// First initialize the key and trust material.
KeyStore ksKeys = KeyStore.getInstance("JKS");
ksKeys.load(new FileInputStream("/.../myKey"), passphrase);
KeyStore ksTrust = KeyStore.getInstance("JKS");
ksTrust.load(new FileInputStream("/../myCertificate"), passphrase);
sslContext = SSLContext.getInstance("TLS");
sslContext.init( kmf.getKeyManagers(), tmf.getTrustManagers(), null);
// We're ready for the engine.
SSLEngine engine = sslContext.createSSLengine(hostname, port);
// Use as client
engine.setUseClientMode(true);
我对密码学真的很陌生,这是我第一次编写这些东西。有什么想法吗?
【问题讨论】:
-
你还有私钥在哪里?为什么所有这些东西都没有在密钥库中?
-
我知道。我在这个领域真的很新。我至少知道通往他们的道路。我应该使用 InputStream 来读取它们,然后将它们加载到我的 Keystore 中吗?
-
方法对吗?
-
真的很抱歉。我说我不知道为什么?我的电脑上有它们(我至少知道它们的路径)
-
他们是如何到达那里的?魔法?谁生成了私钥?以什么格式?谁产生了企业社会责任?谁签的?签名证书及其签名者链是如何提供的?
标签: ssl public-key-encryption public-key jsse