SSL握手失败时的自定义错误

时间:2015-08-01 22:04:35

标签: java tomcat ssl

我在Tomcat 8上部署了SpringBoot REST应用程序。我为已公开的API配置了SSL身份验证。

PFB Tomcat中的配置。

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="D:/sw/apache-tomcat-8.0.23/conf/jks/ServerKeystore.p12" keystorePass="password" keystoreType="PKCS12"
    truststoreFile="D:/sw/apache-tomcat-8.0.23/conf/jks/Keystore.p12" truststorePass="password12" truststoreType="PKCS12"
    clientAuth="true" sslProtocol="TLSv1.2" />

我想在具有错误证书或没有证书的授权客户端尝试命中服务器时抛出自定义错误消息(可能是tomcat文件中的任何配置)。 目前我正在获得 http响应代码0。

我一直试图找到这个。这可以通过tomcat中的任何配置来完成。这是SSL验证失败的正确行为吗?

2 个答案:

答案 0 :(得分:1)

您必须编写自己的Tomcat使用的JSSE包装器类的实现,并使用sslImplementationName连接器属性进行配置。该包装器必须提供执行所需日志记录的套接字工厂的自定义版本。您可能能够使用一个只执行更多日志记录的最小子类,并将所有内容委托给Tomcat库存JSSE实现。

答案 1 :(得分:0)

如果SSL握手失败,则不会出现自定义错误,因为既没有建立纯HTTP连接也没有建立有效的HTTPS连接来发送此错误。因此,对等方最多获得TLS警报,并将针对此类问题显示内置错误消息。