问题标签 [sslhandshakeexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 通过 HTTPS/SSL 的 Java 客户端证书
我正在使用 Java 6,并尝试HttpsURLConnection
使用客户端证书针对远程服务器创建一个。
服务器正在使用自签名根证书,并要求提供受密码保护的客户端证书。我已将服务器根证书和客户端证书添加到我在/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/security/cacerts
(OSX 10.5)中找到的默认 java 密钥库中。密钥库文件的名称似乎表明客户端证书不应该放在那里?
无论如何,将根证书添加到这个商店解决了臭名昭著的问题javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed' problem.
但是,我现在被困在如何使用客户端证书上。我尝试了两种方法,但都没有让我到任何地方。
首先,也是首选,尝试:
我尝试跳过 HttpsURLConnection 类(不理想,因为我想与服务器交谈 HTTP),而是这样做:
我什至不确定客户端证书是这里的问题。
java - SSLHandshakeException unknown_ca apns java
我正在尝试为 iphone 实现一个独立的应用程序;我希望为 iphone 客户端使用 Apple 推送通知。我收到 javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca 以下是我连接到 apns 网关的 Java 代码:
请帮助我了解什么以及如何在我的 Linux 机器上安装 ssl 证书。
编辑 :
它现在对我有用,我重新创建了 Cert.p12,程序开始工作。我不知道不工作的确切原因是什么,但我想这将是损坏的 Cert.p12 文件。
谢谢大家的帮助。
java - 如何通过 Java 中的代理发送 HTTPS 请求?
我正在尝试使用 HttpsUrlConnection 类向服务器发送请求。服务器存在证书问题,因此我设置了一个信任所有内容的 TrustManager,以及一个同样宽松的主机名验证程序。当我直接发出请求时,这个管理器工作得很好,但当我通过代理发送请求时,它似乎根本没有被使用。
我这样设置代理设置:
默认 SSLSocketFactory 的 TrustManager 设置如下:
如果我运行以下代码,最终会出现 SSLHandshakException(“握手期间远程主机关闭连接”):
我假设我在处理 SSL 时缺少某种与使用代理有关的设置。如果我不使用代理,我的 checkServerTrusted 方法会被调用;这也是我通过代理时需要发生的事情。
我通常不处理 Java,也没有太多关于 HTTP/web 的经验。我相信我已经提供了所有必要的细节来理解我正在尝试做的事情。如果不是这种情况,请告诉我。
更新:
看了ZZ Coder建议的文章后,我对连接代码做了如下修改:
结果 (SSLHandshakeException) 是相同的。当我在这里将 SLLSocketFactory 设置为 SSLTunnelSocketFactory(文章中解释的类)时,我使用 TrustManager 和 SSLContext 所做的事情被覆盖了。我还不需要那个吗?
另一个更新:
我修改了 SSLTunnelSocketFactory 类以使用 SSLSocketFactory,它使用信任一切的 TrustManager。这似乎没有任何区别。这是 SSLTunnelSocketFactory 的 createSocket 方法:
当我的代码调用connection.connect时,调用了这个方法,调用doTunnelHandshake就成功了。下一行代码使用我的 SSLSocketFactory 创建一个 SSLSocket;此调用后结果的 toString 值为:
“1d49247[SSL_NULL_WITH_NULL_NULL: 套接字[addr=/proxyHost,port=proxyPort,localport=24372]]”。
这对我来说毫无意义,但这可能是之后事情崩溃的原因。
当调用 result.startHandshake() 时,根据调用堆栈 HttpsClient.afterConnect 再次调用相同的 createSocket 方法,具有相同的参数,除了 Socket s 为空,当它出现时返回 result.startHandshake()同样,结果是相同的 SSLHandshakeException。
在这个日益复杂的难题中,我是否仍然缺少重要的一块?
这是堆栈跟踪:
java - Java Mail:在没有 SSL 的端口 25 上发送电子邮件时出现 SSLHandshakeException
尽管我试图在没有 SSL 的情况下在端口 25 上发送电子邮件,但我收到了 SSLHandshakeException。您可以在下面看到由 javax.mail.Session 和 SSLHandshakeException 打印的调试消息。
你能帮我理解发生了什么吗?
用于创建会话并连接到服务器的代码:
jakarta-ee - JBoss reload certificate truststore without restart
Is there a way to "reload" the certificate truststore in JBoss 4.2 without restart?
I am trying to have an EJB call a web service on a remote server with ssl and am seeing a similar problem with SSLHandshakeException as in the article below. What we are attmepting to do is the following and involves three machines, A the JBoss server acting as a web service client to servers B and C.
1) On A, user enters in hostname for B. The machine on A obtains the self-signed certificate of B and installs it in the trust store (via an external shell script).
2) The SSL socket connection is made to B at which it point it seems the certificate store is loaded on this first attempt. The connection is successful and everything works.
3) Again on A, user does the same thing as in 2, the shell script obtains C's certificate and installs it to the trusstore. However, on the attmepted connection to C, it appears (by enabling javax.net.debug=ssl) that the truststore is not "reloaded" and it doesn't find C's certificate and we get SSLHandshakeException.
After restarting JBoss the "updated" truststore is loaded, and the connection to both B and C work.
Would like to do this without restarting JBoss and gather the above scheme isn't correct. If someone could point me to documentation for the correct way to dynamically update truststore it would be very much appreciated.
java - 请求开始时的异常 - ClientAuth SSL
我有一个嵌入 Jetty 的应用程序。我想在 SSL 中使用客户端证书身份验证以及启用该身份验证时;我在请求开始时收到以下异常。但是在那之后请求得到了正确的处理。此异常仅在从 IE 或 Chrome 访问时出现。从 Firefox 访问时它不会出现。我们有自定义 SSLConnector 扩展 SslSocketConnector。我正在尝试调试它;但想知道是否有任何特定的地方/代码可以开始检查。
更新:
我启用了 SSL 调试选项,并在 ServerHelloDone 消息之后立即读取此异常。这是服务器发送其证书以及我相信的客户端证书请求的消息。我不确定第一次阅读时发生了什么。任何帮助都深表感谢。
更新: 将 JDK 更新到最新版本 23 并尝试启用/禁用这两个属性。仍然得到相同的行为。
更多信息: 所有浏览器都启用了 TLSv1 和 SSLv3。在未启用客户端身份验证的情况下,通信正常进行。使用客户端身份验证,我们总是在第一次握手时得到异常,下一次是正确完成并继续进行而没有异常。在服务器端使用码头版本 6.1.14
java - Android C2DM:无法验证 SSL 证书 javax.net.ssl.SSLHandshakeException
尝试通过 C2DM 服务器发送推送通知时,我收到以下 SSLHandshakeException。
发送消息的代码如下,并且在 App Engine 上运行。当我使用 cURL 时一切正常,所以我知道服务器验证码和设备注册 ID 是正确的。
似乎其他人也有这个问题,但我一直无法找到一个明确的解决方案(至少不是我能够理解的)。感谢任何帮助。
java - 收到致命警报:handshake_failure 通过 SSLHandshakeException
我遇到了授权 SSL 连接的问题。我创建了使用客户端授权 SSL 证书连接到外部服务器的 Struts Action。在我的操作中,我试图将一些数据发送到银行服务器,但没有任何运气,因为服务器导致我出现以下错误:
我的 Action 类中将数据发送到服务器的方法
我的 Mercer.properties 文件:
我第一次认为这是证书问题,我将它从 .pfx 转换为 .jks,但我有同样的错误,没有任何变化。
java - Java HttpsURLConnection SSLHandshakeException
我正在尝试使用 HTTPS 连接到网站HttpsURLConnection
,然后执行 PUT 请求。当我尝试创建OutputStreamWriter
fromHttpsURLConnection.getOutputStream()
时,会引发以下异常:
该页面刚刚获得其证书(由 StartCom 颁发) - 我是否需要手动执行某些操作以使 Java 识别该证书现在存在?我可以毫无困难地连接到同一网站的其他页面,但它们的证书不同。
java - 如何解决 javax.net.ssl.SSLHandshakeException 错误?
我连接了 VPN 以设置库存 API 以获取产品列表,它工作正常。一旦我从 Web 服务获得结果并绑定到 UI。此外,当我拨打付款电话时,我将 PayPal 与我的应用程序进行了快速结帐,我遇到了这个错误。我将 servlet 用于后端进程。任何人都可以说如何解决这个问题?