当前位置: 首页 > 知识库问答 >
问题:

SSL:如何使用连接到同一端口的单独密钥处理多个客户端?

壤驷旭
2023-03-14

另一个遗留支持问题
我们有一个服务器多客户端网络,其中每个组件都有一个自签名证书,并添加到服务器/客户端的信任存储中。我们这里不使用证书颁发机构
现在我们的问题是,我们需要升级所有证书以提高安全性。新的客户端将带有新的证书,甚至服务器也将具有新的证书<我们的问题是如何处理老客户。升级旧客户的密钥库是最后的手段。

不起作用的事情:

>

为新客户端使用新端口:我们考虑为新客户端使用新端口,并为旧客户端继续使用旧端口,但问题是有多个应用程序面临此问题,因此我们必须搜索其他产品未使用的多个新端口。

FWIW:服务器使用Java,客户端使用C

在EJP回答后编辑
我可能在这里问了一个非常愚蠢的问题,但我只是想确定一下。绑定套接字后,绝对无法编辑其SSL上下文。对吗
此外,我们可以选择握手期间使用的服务器证书吗?我知道chooseClientAlias()和chooseServerAlias()方法,但在发送客户端Hello消息之前,我们不知道要使用哪个证书。

共有1个答案

卜和悌
2023-03-14

使用不同的端口:

  1. (1) 将在服务器处理客户端证书时工作

这就是为什么您应该使用CA,甚至是内部CA,以及为什么您绝对不应该再犯同样的错误。如果客户端信任CA而不是直接信任自签名服务器证书,您现在就不会有这个问题,将来也不会有这个问题,无论您升级证书多少次,直到CA证书到期,这应该需要20年。

而且,在进行此操作时,请确保构建的方式能够更新客户端信任库。

绑定套接字后,绝对无法编辑其SSL上下文。对的

一旦初始化SSLContext,在创建套接字之前,就无法编辑它,更不用说绑定它们了。嗯,也许你可以重新加载KeyManager和TrustManager,只是不告诉SSLContext,但我不是说它会(或不会)工作。

此外,我们可以选择握手期间使用的服务器证书吗?

是的,这就是KeyManager接口的作用,特别是chooseServerAlias()

我知道chooseClientAlias()和chooseServerAlias()方法,但在发送客户端Hello消息之前,我们不知道要使用哪个证书。

在收到客户端hello之前,不会调用chooseServerAlias。

 类似资料:
  • 问题内容: 当使用Socket类时,它正在某个端口上建立与服务器的TCP连接,但是ServerSocket能够在服务器上为每个接受请求处理多个客户端连接,并将其委托给线程来处理该请求。但是ServerSocket类如何在同一个端口上接受多个tcp连接。 这是否意味着要由操作系统来决定它允许多少个连接,或者允许的最大积压量是多少,并且可以由OS之上的应用程序控制(我的意思是Java受OS支持的最大积

  • 我有一个Android应用程序,需要允许多个套接字通信。以下是相关的基本工作: 我的应用程序(说服务器)是一个将作为服务器套接字运行的服务。其他应用程序可以在预定义的端口上连接到它。可以有多个连接,例如客户端1、客户端2。 所以,当客户端1发送hello时,服务器将对此进行处理,并应将回复发送回客户端1。 目前我能够连接客户端1和客户端2的服务器。我已经为其创建了输入、输出缓冲区。但我不确定服务器

  • 下面的代码片段是从JoinedStreams的javadoc复制的 这两个流仅基于一个键(通过< code>t =计算)进行连接 我会问我如何基于多个键进行连接,例如,one.a = two.a和

  • 传输控制协议由定义。Web服务器在一个端口上侦听,但在同一个端口上处理多个tcp连接——这是如何实现的?一个连接是否以某种方式转移到其他传入端口,以便能够监听新连接?

  • 请帮助我理解grpc客户端连接错误处理。 我以前用过Micrsoft WCF。如果没有接受以下传入连接的服务,很容易尝试多次连接并放弃: 如果某些IP: port上没有服务侦听,则进行5次连接尝试,然后终止客户端应用程序 这是在客户端和服务同时从VisualStudio调试启动时使用的,所以有时客户端首先启动,它必须等待服务启动。 我曾尝试使用gRPC客户端执行相同的操作,但没有重置from恢复工

  • 从我的应用程序中,我需要配置多个需要连接到单个服务器的客户端连接。为此,我使用Application Context BeanFactory创建了可变数量的bean,具体取决于我配置了多少客户端。这是2个客户端的代码: 这是我的工厂方法: 当我运行程序时,两个客户端都连接到我的服务器。然而,一旦服务器将其第一个有效负载发送到每个客户端,我就会得到以下异常(每个客户端一个): 这个想法是数据将被读取