没有任何改变,但出现 "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"/>
我没有对我的 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"/>