gpt4 book ai didi

java - JSS SSLSocket 问题选择客户端证书

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

这是来自 Mozilla Crypto Dev ML 的交叉帖子。希望 SO 上的某个人有一些使用 org.mozilla.jss 的经验。 Link: JSS - MDN

我试图分别使用两个客户端套接字和两个不同的客户端证书(客户端证书 A 和 B)向远程主机发出两个单独的 HTTPS 请求。我的测试程序是 SSLTest.java 的修改版本

在我的主机上,我能够在两个不同的套接字上建立到远程主机的两个连接。对于两个单独的连接,我都能够从远程 Web 服务器收到 200 OK 返回。

我的问题是客户端证书“A”同时用于连接“A”和“B”。

我一直在使用 this构造函数:

public SSLSocket(java.lang.String host,int port, 
java.net.InetAddress localAddr,
int localPort,
SSLCertificateApprovalCallback certApprovalCallback,
SSLClientCertificateSelectionCallback clientCertSelectionCallback)

我还实现了接口(interface) SSLClientCertificateSelectionCallback ( source ),以便使用上述构造函数并传递正确的客户端证书。此外,我在已实现的 SSLClientCertificateSelectionCallback select() 函数中放置了一行,以在执行回调时进行记录。

运行我的应用程序并检查日志,select() 方法仅在创建第一个 SSLSocket(选择客户端证书“A”)期间调用一次,并且在指定客户端证书 B 昵称时永远不会在未来的 SSLSocket 实例化中调用.事实上,我必须重新启动我的应用程序才能让 select() 再次运行。

当远程服务器请求证书时,有什么方法可以触发 native 回调代码运行 select() 吗?

谢谢,

公关

最佳答案

听起来可能正在进行一些 session 缓存。你说你使用 SSLSocket。您是否尝试过将 session 缓存设置为 false?默认情况下,SSLSocket 启用 session 缓存。

例如在 SSLSocket 类中,有方法 public void useCache(boolean b) 如果您在创建套接字后将参数设置为 false,希望这将阻止服务器缓存您的第一个 session (我假设您正在从一个程序调用两个客户端连接)。这样,它应该会提示您从第二个连接请求另一个证书请求。

关于java - JSS SSLSocket 问题选择客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338529/

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