gpt4 book ai didi

java - JAVA 中提高 https 安全性的用例

转载 作者:太空宇宙 更新时间:2023-11-03 15:04:31 25 4
gpt4 key购买 nike

我正在编写一个应确保两方(称它们为客户端和服务器)之间的安全连接的应用程序。

服务器应该限制哪些客户端可以使用 https 连接。为此,服务器将颁发一定数量的证书,当客户端尝试连接时将检查这些证书。如果客户端使用的证书不在受信任列表中,则不会建立连接。

此证书应使用某种 USB 设备分发。因此,当使用我的应用程序的客户端尝试使用 https 从服务器获取某些内容时,应用程序应该从 usb 设备读取该证书并使用它来建立 https 连接。私钥应始终在设备上保密。

到目前为止,我设法在客户端和服务器 (JKS) 上创建了本地 keystore ,将它们添加到彼此信任的列表中并使用它们来实现正确的连接。

我的问题是:客户端证书是否可以由服务器颁发并传输给客户端,以及 https 连接所需的私钥?我不想在客户端机器上创建任何数据或 keystore ,建立 https 连接所需的一切都应该在该设备上。设备可以有一些程序和 api 来帮助这个过程并确保私钥的保密性。

任何帮助将不胜感激:)

最佳答案

can client certificates be issued by a server and transported to clients, all together with private key required for https connection?

从技术上讲,他们可以,但如果您想确保私钥只到达其预期用户,您将不得不通过其他方式验证该连接。就您的整体方案而言,这并没有多大帮助。此外,通过将私钥作为数据发送给客户端,他们可能能够以某种方式提取它。

如果您可以实际发送 USB 设备,则可以使用支持 PKCS#11 的硬件加密 token .此类 token 往往具有以无法提取的方式存储私钥的选项(它只能与设备一起使用)。它们往往以多种形式出现:作为智能卡(在这种情况下您需要读卡器)或作为 USB token (它看起来像内存棒,但实际上不是)。根据型号的不同,USB token 实际上可以是带有嵌入式读卡器的智能卡。

Java 支持PKCS#11 keystores ,因此如果此 token 带有 PKCS#11 驱动程序/库,则可以从 Java 使用它。

关于java - JAVA 中提高 https 安全性的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069514/

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