gpt4 book ai didi

java - 带硬件 token key 的 SSLSocket

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:00 25 4
gpt4 key购买 nike

我对使用客户端 token 为 SSL/TLS 执行客户端证书身份验证感兴趣,但客户端私钥驻留在(非 PKCS11 可访问的)硬件 token 上。本来想更换key manager,但是无法从token中返回私钥,所以考虑修改底层的SSLSocket和相关类来实现我的目的。

建立 TLS session 时使用的私钥在哪个 Java 类中,以便我可以覆盖该功能?还有其他建议吗?

最佳答案

我最终通过创建一个新的提供者来做到这一点。我的提供商注册了以下内容:

  • 实现私钥的硬件设备抽象;我称之为“ token ”。
  • 扩展 KeyStoreSpi 的自定义 keystore 。 keystore 知道如何从 token 中枚举证书和别名。
  • 知道如何使用 token 执行签名操作的自定义签名对象。我只需要为我的类(class)实现 RSA/SHA 签名算法的一个子集。
  • 扩展 SSLSocketFactory 的自定义套接字工厂。我这样做是为了设置首选密码套件。

提供商将我的 token 注册为 PKCS11 设备,以避免在客户端身份验证期间出现默认密码提示(我对 token PIN 使用自定义密码提示)。我将我的提供者放在提供者列表的顶部,创建了一个新的 SSLContext 并设置了 SSLSocketFactory,最后建立了连接。

-Djavax.net.debug=true 在客户端和服务器上一直是我的 friend 。

关于java - 带硬件 token key 的 SSLSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31190205/

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