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

如何配置Spring Boot应用程序以接受未知的SSL客户端证书?

卫甫
2023-03-14

我创建了一个具有双向SSL认证的Spring Boot 2应用程序。
简而言之,它归结为以下配置:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().authenticated()
                .and().x509();
    }

该应用程序具有密钥库/信任库,可以与导入的客户端证书一起正常工作。
出乎意料的是,如果我尝试与未知客户端证书连接,由于SSL握手失败,连接无法建立

然而,我希望即使证书不被接受,也能到达应用层,并用应用程序的HTTP响应进行响应。

有没有办法做到这一点?

共有2个答案

朱和惬
2023-03-14

回答我自己的问题:我本可以使用Spring Boot属性

server.ssl.client-auth: want

而不是

server.ssl.client-auth: need

第一个选项仍然允许连接到tomcat,即使证书无效或不存在。然后请求将被安全过滤器拒绝。

胥玮
2023-03-14

如果不需要在服务器端进行证书握手,这意味着您不需要SSL。因此,在配置文件中停用它:

server:
  ssl:
     enabled: false

PS:仅在HTTP协议中公开您的REST webservice是危险的。也许,在开发环境中进行这样的配置是有意义的。

 类似资料:
  • 我创建了一个Spring Boot应用程序,它实例化了ActiveMQSSLBroker的一个实例。我试图使用HermesJMS作为客户端连接到此代理。 我在Hermes中配置了连接工厂,如下所示: null 代理在spring-boot应用程序中的配置如下: SSL连接器: brokerurl:ssl://localhost:61616 键管理器: 从keymanagerfactory.getk

  • 在SpringJSFWeb应用程序中将Netty客户端处理程序配置为消息接收点,有没有具体的方法? 如果一些独立的Java应用程序充当Netty服务器,我如何接收到SpringJSFWeb应用程序的消息?

  • 问题内容: 使用Websphere MQ 8.x,我们是较大环境中的一个应用程序,并且是某些数据接口的客户端。我们的应用程序是在WildFly 9上运行的Java EE应用程序,该应用程序使用资源适配器()与EAR文件一起部署在同一AS中。我们在两个方向上与MQ服务器进行交互。因此,一方面,我们有一些MDB(由于历史渊源仍是EJB 2.x格式而没有注释)列出了一些队列,并由包含激活配置属性的部署描

  • 问题内容: 我正在尝试使用axios向api端点发出请求,但出现以下错误: 似乎axios使用的https模块无法验证服务器上使用的SSL证书。 使用浏览器访问服务器时,证书有效,我可以查看/下载该证书。我还可以通过https向浏览器上的api请求。 我可以通过关闭验证来解决此问题。此代码有效。 问题是,这不验证SSL证书,因此打开了安全漏洞。 如何配置axios以信任证书并正确验证它? 问题答案

  • 问题内容: 它看起来像一个标准问题,但是我在任何地方都找不到清晰的方向。 我有Java代码试图连接到可能带有自签名(或过期)证书的服务器。该代码报告以下错误: 据我了解,我必须使用keytool并告诉java允许这种连接是可以的。 解决此问题的所有说明均假定我完全精通keytool,例如 生成服务器的私钥并将其导入密钥库 是否有人可以发布详细说明? 我正在运行Unix,所以bash脚本是最好的。

  • 有些HTTP客户端接受此证书,有些则不接受。什么能起到作用呢? 即将连接()到www.lucidpress.com端口443(#0) 尝试54.236.129.63...已连接 成功设置证书验证位置: cafile:none capath:/etc/ssl/certs SSLv3、TLS握手、客户端hello(1): SSLv3、TLS握手、服务器hello(2): SSLv3、TLS握手,证书(