没有任何改变,但出现 "peer not authenticated" 错误

nothing changed but got "peer not authenticated" error

我没有对我的 tomcat 进行任何更改,但是自从 2 天前大约 23:00 下午 "peer not authenticated" 发生以来,我无法登录。 错误是

2016-03-05 19:23:34 ERROR [UsernamePasswordAuthnHandler] - IOException happended during authentication
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:407)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:126)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
    at com.company.userservice.common.util.HttpUtil.execute(HttpUtil.java:256)
    at com.company.userservice.common.util.HttpUtil.issueGetRequest(HttpUtil.java:94)
    at com.company.userservice.engine.handler.UsernamePasswordAuthnHandler.authenticateUsernamePasswordInternal(UsernamePasswordAuthnHandler.java:124)
    at org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler.doAuthentication(AbstractUsernamePasswordAuthenticationHandler.java:71)

我猜是自签名证书过期导致的,但显示它仍然有效:

keytool -list -v -keystore xxxx.jks

Serial number: 7a692bb1 Valid from: Thu Jul 03 16:13:19 CST 2014 until: Thu Jun 02 16:13:19 CST 2016 Certificate fingerprints:

下面是我在 server.xml

中的配置
<Connector port="8491" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" 
keystoreFile="/usr/local/tomcat7_8091/conf/xxxx.jks" keystorePass="123456" />    

当前的自签名密钥发生了什么变化?我也尝试生成一个新的自签名密钥,但仍然出现与上述相同的错误。我应该怎么办?它已经工作了 2 年,但突然停止工作。

解决这个问题很容易,但找出根本原因是一个痛苦的过程...希望我在这里写的内容可以帮助将来的人并节省一些时间。

我的属性文件中的确认是错误的: 为 ssl 端口设置了一个非 ssl 端口,在我的例子中它应该是 8443 而它被设置为 8081

因此出现错误。

8443 在 tomcat server.xml 中启用,如下所示:

    <Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" keystoreFile="D:\xxxx\keystore" keystorePass="123456"/>