如何从 Bluemix 上的 servlet 访问客户端证书

how to access the client certificate from a servlet on Bluemix

我知道我可以在 Bluemix 上将客户端证书与自定义域一起使用。此处解释了设置信任库的过程:https://console.ng.bluemix.net/docs/manageapps/secapps.html Bluemix 将验证客户端证书作为 TLS 握手的一部分。到目前为止,还不错。

我是自定义域上 Bluemix 中的 运行 一个 Java servlet,我想查看客户端证书的详细信息。通常的做法是 HttpServletRequest.getAttribute("javax.servlet.request.X509Certificate");同样的方法是否适用于 Bluemix?如果没有,是否有其他方法可以获取该客户端证书的详细信息?

当在自定义域上使用 Bluemix 应用程序 运行 执行相互身份验证时,应设置名为 $WSCC 的 HTTP header。 header 的值是 based64 编码的客户端证书(只有一个)。如果您的应用程序是 运行 Liberty 运行时(使用 Liberty buildpack 部署),您应该能够使用 HttpServletRequest.getAttribute("javax.servlet.request.X509Certificate") 调用检索该证书。在其他运行时,您可能必须直接查找 header。