`
Jony.Hwong
  • 浏览: 116896 次
  • 来自: ...
社区版块
存档分类
最新评论

有关SSL的问题

阅读更多
使用HttpClient中有关SSL的问题(一)2008-09-02 11:12

最近写的代码涉及到用HttpClient通过SSL读取XML文件,我的编程环境是Windows XP,IDE是Eclipse,JDK1.5,当我完成这个项目,打包成jar包发布时,我用一个批处理文件启动jar包中的一个主程序,并且正确设置了classpath(引用其他jar包),却发现出现了异常,
   11:20:13,075 INFO HttpMethodDirector:439 - I/O exception (javax.net.ssl.SSLKeyException) caught when processing request: RSA premaster secret error
11:20:13,075 INFO HttpMethodDirector:445 - Retrying request
11:20:13,200 INFO HttpMethodDirector:439 - I/O exception (javax.net.ssl.SSLKeyException) caught when processing request: RSA premaster secret error
11:20:13,200 INFO HttpMethodDirector:445 - Retrying request
11:20:13,310 INFO HttpMethodDirector:439 - I/O exception (javax.net.ssl.SSLKeyException) caught when processing request: RSA premaster secret error
11:20:13,310 INFO HttpMethodDirector:445 - Retrying request
javax.net.ssl.SSLKeyException: RSA premaster secret error
        at com.sun.net.ssl.internal.ssl.PreMasterSecret.<init>(PreMasterSecret.java:86)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:515)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:160)
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:495)
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:433)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:877)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1089)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:618)
        at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
        at org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream(HttpConnection.java:828)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2116)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
        ......
        ......
Caused by: java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/ECB/PKCS1Padding
        at javax.crypto.Cipher.getInstance(DashoA12275)
        at com.sun.net.ssl.internal.ssl.JsseJce.getCipher(JsseJce.java:90)
        at com.sun.net.ssl.internal.ssl.RSACipher.<init>(RSACipher.java:35)
        at com.sun.net.ssl.internal.ssl.RSACipher.getInstance(RSACipher.java:69)
        at com.sun.net.ssl.internal.ssl.PreMasterSecret.<init>(PreMasterSecret.java:82)
        ... 23 more

我可以保证我在Eclipse中添加的类库全在classpath下,但是我在Eclipse下开发时它能正常工作,而脱离了Eclipse就无法运行,之前我寻找了各种

方法都不奏效,原因只在于Eclipse:在用Eclipse创建一个新的Java应用程序时,Eclipse会在build path添加$JAVA_HOME/jre/lib/ext目录下的四个jar:dnsns.jar,localedata.jar,sunjce_provider.jar,sunpkcs11.jar。如果你也遇到同样的问题,现在你该明白怎么做了:将这四个包放在classpath下。


使用HttpClient中有关SSL的问题(二)2008-09-02 11:39

上次是在Windows环境下测试,这次要正式部署到Solaris平台,现在问题又出现,同样Java给出异常(我都习惯了):
Caused by: sun.security.validator.ValidatorException: PKIX path building failed:
              sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid
              certification path to requested target
[java] at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:285)
[java] at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191)
[java] at sun.security.validator.Validator.validate(Validator.java:218)
[java] at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
[java] at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
[java] at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
[java] at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:954)
[java] ... 10 more
[java] Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find
                  valid certification path to requested target
[java] at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
[java] at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
[java] at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:280)
[java] ... 16 more
解决方法:在浏览器下通过浏览器导出该站点的证书文件,后缀名一般是.cer,用java keytool工具将该证书导入到$JAVA_HOME/jre/lib/security/jssecacerts,它是一个keystore,命令行:keytool -import -alias "my server cert" -file server.cer -keystore $JAVA_HOME/jre/lib/security/jssecacerts,这样就OK了。

分享到:
评论
2 楼 calljunny 2015-07-14  
多谢多谢!弄了两天,找了两天了,总算在楼主这里找到真正的问题了!添加进来了之后,就好了。万分感谢!
1 楼 t8500071 2010-10-19  
神贴啊~~刚好遇到用bat执行代码时连接sqlserver出现ssl的问题,多亏楼主~~膜拜!!!!!

相关推荐

    解决Python找不到ssl模块问题 No module named _ssl的方法

    首先,找到Python的源代码,通常位于`/src/Python-X.Y.Z/`目录下,然后打开`Modules/Setup`文件,找到与SSL相关的部分并根据你的系统配置进行修改。例如,添加SSL路径,并确保SSL模块被启用。 ```bash SSL=/path/...

    apache 无法加载ssl模块的问题

    对于“mod_ssl_etc”这个文件名,这可能是指 Apache 的 SSL 相关配置文件,通常包括 `ssl.conf` 和证书/密钥文件。你需要检查这些文件是否配置正确,例如,私钥和证书路径、虚拟主机的 SSL 设置等。 总结,解决...

    openjdk遇到的https的ssl异常解决方案

    * 确保 SSL/TLS 协议的版本正确,避免出现版本不匹配的问题。 * 确保应用程序的配置正确,避免出现配置错误的问题。 通过遵循这些步骤和注意事项,可以成功解决 openjdk 遇到的 HTTPS 的 SSL 异常问题,确保应用...

    Linux-CentOS编译好的python3.8,解决了ssl相关问题

    在Linux-CentOS环境下,Python 3.8的编译与安装是一个常见但有时又具有挑战性的任务,尤其是在处理SSL(Secure Sockets Layer)相关问题时。Python的SSL模块是其标准库的一部分,用于实现安全的网络通信,如HTTPS...

    boringssl win-x86_64 包含bssl.exe,crypto.lib,ssl.lib

    而`bssl.exe`则作为一个独立工具,用于调试或验证SSL/TLS相关的配置和证书问题。 总结来说,这个`boringssl win-x86_64`包为Windows 64位环境提供了BoringSSL的核心组件,包括用于命令行操作的`bssl.exe`,以及用于...

    Win7配置Tomcat6与SSL问题以及解决方案.doc

    ### Win7配置Tomcat6与SSL问题及解决方案 在配置Windows 7系统下的Apache Tomcat 6服务器并启用SSL加密时,遇到了一些常见问题。本文将详细介绍这些问题的具体表现、原因分析以及相应的解决策略。 #### 一、Win7 ...

    commhttpclent3 解决ssl报错的问题

    在使用老版本的HTTP客户端库,如`commhttpclent3`(可能是Apache HttpClient 3.x版本的一个误写)时,可能会遇到SSL(Secure Sockets Layer)相关的错误。这些错误通常与证书验证、信任管理或协议支持有关。下面我们...

    TLSSSL协议详解

    随着SSL 3.0协议中一些问题的逐渐显现,Netscape及其他贡献者对协议进行了重大改进,并将其重新命名为TLS(Transport Layer Security,传输层安全)1.0。 - **名称变化的意义**:“Transport Layer Security”相较于...

    ssl实例文件共享

    1. SSL证书:这是SSL安全性的核心,包含服务器的公钥和相关身份信息,由权威的证书颁发机构(CA)签署。用户浏览器和服务器之间建立连接时,服务器会提供SSL证书,浏览器验证其有效性。 2. 握手过程:SSL连接的建立...

    易语言SSL_Socket通信模块源码

    3. 错误处理:模块中通常会有丰富的错误处理机制,以便在遇到问题时能够及时反馈并处理。 四、应用示例 在易语言中,使用SSL_Socket通信模块,可以创建安全的FTP服务器、HTTPS网站,或者实现安全的聊天应用程序等...

    禅道10.4的SSL配置

    对比现有的`httpd.conf`,找到与SSL相关的部分,如`VirtualHost`、`SSLCertificateFile`、`SSLCertificateKeyFile`等指令,将它们合并到现有的配置文件中。 4. **配置虚拟主机**:在`httpd.conf`中,你可能需要创建...

    Qt实现的SSL通信客户端和服务器

    首先,SSL通信的主要目的是为了解决网络上的数据传输安全问题,它通过加密技术确保数据在传输过程中不被窃取或篡改。SSL协议包含握手协议、记录协议、密钥交换协议等多个子协议,其中握手协议用于建立安全连接,记录...

    activemq ssl双向认证连接

    // sslProperties包含SSL相关的配置 client.connect(options); ``` `sslProperties`应包含如`ssl.protocol`、`ssl.provider`等属性以指定SSL协议和提供商。 5. **测试和调试**:连接后,你应该能够发送和接收消息...

    腾讯云短信接口SSL

    在接入此接口时,可能会遇到SSL问题,这通常是由于服务器证书配置不当或者SSL库版本不兼容导致的。 解决腾讯云短信接口SSL问题源码可能包含以下关键步骤: 1. **检查SSL证书**:确保服务器配置了有效的SSL证书,...

    超微H12SSL-C用户手册

    然而,Supermicro并不承担由于文档中可能存在的不准确性而导致的责任,并且没有义务更新或保持文档的最新性,也不必通知任何有关方面进行更新。 #### 二、产品特性与变动声明 在手册的这一部分中,Supermicro保留...

    Delphi7 indy9 ssl使用的两个动态库

    配置Indy 9的SSL功能,首先要在你的项目中引入Indy相关的单元,如IndyCore, IndySystem, IndyProtocols和IndySSL。然后,对于服务器端,你需要实例化TIdServerComponent,并在其上添加TIdTCPServer组件,接着添加...

    Python-ssllogger解密并记录进程的SSL流量

    Python作为一款广泛使用的编程语言,提供了丰富的库来处理SSL/TLS相关的任务。在本篇中,我们将深入探讨“Python-ssllogger”这个工具,它能够帮助我们解密并记录进程的SSL流量,这对于进行网络安全分析、调试或者...

    TomcatSSL证书部署指南

    这些问题可以参考相关的技术链接进行修复。 另一个要介绍的内容是安全签章的安装。沃通电子认证服务有限公司提供的安全签章目前只支持OV(组织验证)级以上证书使用。安全签章分为中文签章和英文签章两种,可以根据...

    ssl_java.zip

    以下将详细讲解这个过程及其相关的Java SSL包使用。 首先,了解SSL的工作流程。SSL握手过程通常包括以下步骤: 1. 客户端发送一个“ClientHello”消息,包含所支持的SSL/TLS版本、加密套件和随机数。 2. 服务器回应...

Global site tag (gtag.js) - Google Analytics