繁体   English   中英

java.net.SocketException:连接重置

[英]java.net.SocketException: Connection reset

我正在编写一个应用程序,在其中我可以控制客户端和服务器的代码。 我正在使用SSLSockets来实现它。 我已经使用普通的不安全套接字运行了该协议,但是当我尝试切换到SSLSockets(使用完全相同的协议)时,我不断得到以下堆栈跟踪:

java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:168)
        at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
        at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:782)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:739)

由于某些原因,完全相同的代码可以完美地用于不安全的套接字。 为什么会这样呢?

对于任何反馈,我们都表示感谢。 谢谢。

巴勃罗

从您的帖子中无法检测到该问题。
切换到安全套接字时,默认情况下使用最安全的密码。
如果尚未正确配置信任库/密钥库(或未启用未经身份验证的套件),则SSL握手将失败。
异常似乎表明了这一点。
您可以做的是使用javax.net.debug=ssl,handshake运行程序以启用SSL调试信息,并在希望有人帮助的情况下发布调试信息和您的代码。

原因可能各不相同,如Vladimir Dyuzhev所建议,-Djavax.net.debug = ssl是您的朋友。

无论如何,这可能是证书问题-确保您具有正确的密钥库和信任库。 您需要在密钥库中输入以下一项:

  • 私钥
  • 证书
  • 证书发行人的完整链

和一个信任库:

  • 服务器证书的完整证书链

我在生成适当的密钥库时遇到问题(trustore很容易-只需使用keytool)。 对于密钥库,您需要像这样的st(带有openssl + java的Linux):

# convert all to PEM
openssl x509 -in ${ca}.der -inform DER -outform PEM -out ${ca}.pem
openssl x509 -in ${subca}.der -inform DER -outform PEM -out ${subca}.pem
# create one large PEM file containing certificate chain
cat ${ca}.pem ${subca}.pem > tmp_cert_chain.pem
# generate PKCS#12 BUNDLE
openssl pkcs12 -export -in ${cert}.pem -inkey ${key}.pem -certfile tmp_cert_chain.pem -out tmp_pkcs12.pfx
# convert PKCS#12 bundle to JKS
keytool -importkeystore -srckeystore tmp_pkcs12.pfx -srcstoretype pkcs12 -srcstorepass ${storepass} -destkeystore $keystore -deststoretype jks -deststorepass ${storepass}
# print out JKS keystore
keytool -list -keystore $keystore -storepass $storepass

根据您使用的操作系统,它可能需要管理员/ root用户权限才能绑定或监听SSL端口。 尝试以管理员权限(在Windows中)或sudo'd(在Linux中)运行应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM