如何从客户端强制使用客户端身份验证证书



我正在处理服务器到服务器的集成,我想从https请求的发起端了解是否使用了客户端认证身份验证。 理想情况下,我希望能够强制使用它,但是我没有关于如何从 Java 实现这一点的线索。 目前我正在使用Apache Commons Http客户端。

正如我从java https客户端证书身份验证中了解到的那样,客户端身份验证的使用必须由https请求的接收者发起,我没有发现客户端可以强制它,甚至没有报告它何时发生。

如果这种行为是不可能的,那么我可能会回退到将 http 有效负载单独加密到 https 连接。 这意味着双重加密仍将使用https,这感觉有些笨拙。

No.它不能从客户端强制执行,只能由服务器强制执行。

普通https(单向)基本上是检查服务器是否被客户端信任,客户端信任服务器,通信发生。但是客户端身份验证更进一步,在客户端信任服务器的基础上,服务器还尝试对用户进行身份验证。只有当双方都相互信任时,通信才会发生。

所有这些信任验证链都发生在协议级别。您不必担心它将如何发生。您所要做的就是设置信任链权限(信任库中的证书链)。

您的双重加密概念不是一个可行的解决方案。客户端和服务器首先以纯文本形式相互通信,以查看它们是否可以在此处以安全的方式(https)进行通信。一旦他们达成协议,所有流量都将从那里加密。包括您的有效载荷。

当您使用自己的密钥在服务器上加密有效负载并在客户端解密时,几乎没有安全挑战,例如,如何将要解密的密钥传输到客户端?

通常,服务器是强制执行身份验证的服务器(在您的情况下,客户端证书身份验证),但您需要确保双方都知道如何以这种方式进行通信。

多年前,我写了一个简单的客户端证书身份验证的Java服务器/客户端,你可以在这里查看一些线索。

最新更新