java - 是否有可能根据 URL 同时为同一个 Web 应用程序使用一种方式和相互 SSL

标签 java tomcat ssl spring-security restful-authentication

我有一个场景,其中我几乎没有其他 web 服务,其中很少需要强制执行相互 ssl,很少应该只有一种方式 ssl,这里是相同的 web 应用程序。

在基于 tomcat/Spring 的应用程序中这可能吗?

最佳答案

抱歉回复晚了,是的,我这样做了,不确定是否是最好的方法,但有点乱。

第 1 步:在您的 tomcat 中使用 clientAuth=want 设置 SSL 的一种方式。 这将解决您的场景,您希望所有 web 服务的一种方式 ssl 接受需要额外/相互身份验证的方式。

第 2 步:现在是需要相互 ssl 的 Web 服务。 编写一个 servlet 过滤器,并针对特定的 Web 服务 url 检查传入的 http 证书请求。遍历在请求中找到的证书并将其与来自您的信任库的证书进行匹配。如果找到匹配项,则继续请求流程,如果没有找到匹配项,则返回异常,因为未找到 SSL 证书。

X509Certificate[] certificates = (X509Certificate[]) request
                    .getAttribute("javax.servlet.request.X509Certificate");

以上代码将在您的请求中为您提供一系列证书。

注意:确保您的 SSL 配置正确,否则证书变量保持为空。

关于java - 是否有可能根据 URL 同时为同一个 Web 应用程序使用一种方式和相互 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33153288/

相关文章:

java - 自定义 Swing 组件 : questions on approach

java - 如何处理从xml到Activity的点击

java - Mapreduce作业运行,出现异常

JAVA-EE Tomcat Axis2 - 设置和项目构建

jsp - GoogleWeather 无法解析为类型

java - 有什么方法可以使用 javax.net.ssl.SSLServerSocket 指定 Diffie-Hellman 素数的范围吗?

postgresql - 如何使用 DataGrip 设置 DataGrip 通过隧道通过 SSL 模式连接 Cloud SQL

java - SQLite 无法从 Jar 连接到数据库

java - 小服务程序和 TLS

java - 设置可以处理 SOAP 消息的 Tomcat 服务器