我创建了一个带有双向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响应进行响应。
有什么办法做到这一点吗?
如果不需要在服务器端进行证书握手,则意味着您不需要SSL
。因此,在您的配置文件中停用它:
server:
ssl:
enabled: false
PS:仅在HTTP
协议中暴露您的REST
Web服务是危险的。也许,在您的开发环境中拥有这样的配置是有意义的。
回答我自己的问题:我本可以使用Spring Boot属性
server.ssl.client-auth: want
而不是
server.ssl.client-auth: need
第一个选项仍然允许连接到tomcat,即使证书无效或不存在。然后该请求将被安全筛选器拒绝。