配置Java SSL 访问网站证书

最近在开发 Java 访问 Azure ServiceBus 时遇到SSL证书问题,导致JAVA报错,不能正常访问,报错信息如下:

javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

解决方法:配置要访问网站的域名证书,并导入的服务器jdk环境中

  1. https://github.com/escline/InstallCert下载InstallCert.java
  2. 编译javac InstallCert.java
  3. 运行InstallCert,参数是你调用的网址(Azure事件中心的地址),如果是80端口可以省略port
java InstallCert [host]:[port]

例:java InstallCert abc.com:443

  运行后会列出证书让你选择,输入1回车,最后会在当前目录生成一个jssecacerts文件。

1. 导出证书文件

1)     使用CMD命令进入jssecacerts文件所在目录

2)     运行以下命令,导出证书文件:

keytool -exportcert -alias [host]-1 -keystore jssecacerts -storepass changeit -file [host].cer

例:keytool -exportcert -alias www.abc.com-1 -keystore jssecacerts -storepass changeit -file www.abc.com.cer

将证书文件导入系统keystore

keytool -importcert -alias [host] -keystore [path to system keystore] -storepass changeit -file [host].cer

例:keytool -importcert -alias www.abc.com -keystore "C:\Program Files\Java\jre1.8.0_111\lib\security\cacerts" -storepass changeit -file www.abc.com.cer
# Example:
java InstallCert woot.com:443

    Loading KeyStore /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/cacerts...
    Opening connection to woot.com:443...
    Starting SSL handshake...

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    <...>

    Server sent 1 certificate(s):

     1 Subject O=Woot Inc, C=US, ST=Texas, L=Carrollton, CN=*.woot.com
       Issuer  CN=SecureTrust CA, O=SecureTrust Corporation, C=US
       sha1    4b 46 ca 6b 83 05 b3 51 ff c6 e7 9c fd b3 9b e3 3f 2e c4 53
       md5     e8 a5 88 1b d5 67 bb fc 88 cc b1 c5 2b ac c4 7d 

    Enter certificate to add to trusted keystore or ‘q‘ to quit: [1]

[enter]

    [
    [
      Version: V3
      Subject: O=Woot Inc, C=US, ST=Texas, L=Carrollton, CN=*.woot.com
      Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5

    <...>

    Added certificate to keystore ‘jssecacerts‘ using alias ‘woot.com-1‘

keytool -exportcert -alias woot.com-1 -keystore jssecacerts -storepass changeit -file woot.com.cer

    Certificate stored in file <woot.com.cer>

(sudo) keytool -importcert -alias woot.com -keystore /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/cacerts -storepass changeit -file woot.com.cer

    Owner: O=Woot Inc, C=US, ST=Texas, L=Carrollton, CN=*.woot.com
    Issuer: CN=SecureTrust CA, O=SecureTrust Corporation, C=US

    <...>

    Trust this certificate? [no]:

yes

    Certificate was added to keystore

  

参考网址:https://github.com/escline/InstallCert

时间: 2024-10-09 13:40:52

配置Java SSL 访问网站证书的相关文章

java获取https网站证书

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.security.KeyStore; import java

python SSL访问网站代码

经常遇到要用Python访问SSL网站,这是一个简单的代码,几行就搞定了! import socket import ssl sock = ssl.wrap_socket(socket.socket()) sock.connect(('www.test.com', 443))#其中www.test.com要访问的网站 data = 'xxxxx'#data为要发送的数据 sock.sendall(data)recv_data = sock.recv(8192) sock.close() prin

在mac Apache配置https方式访问网站

引入httpd-ssl.conf文件 在相应的目录下找到httd-conf文件  一般都是在/etc/apache2/httpd.conf  下 取消掉Include /private/etc/apache2/extra/httpd-ssl.conf 前面的注释符号#  也就是引入httpd-ssl.conf文件 生成KEY和证书. 因为在 /private/etc/apache2/extra/httpd-ssl.conf 已经配置好KEY 和证书的名字所以下面的步骤中请不要修改生成的KEY文件

svn+apache+ssl安装配置,通过SSL访问

系统环境: [[email protected] conf]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [[email protected] conf]# uname -r 3.10.0-327.el7.x86_64 安装SVN [[email protected] conf]# yum install -y subversion #安装SVN [[email protected] ~]# svn --versio

ES配置生成SSL使用的证书

cd /usr/local/elasticsearch/bin/ ./elasticsearch-certgen ##################################### Please enter the desired output file [certificate-bundle.zip]: cert.zip (生成的压缩包名称,输入或者保持默认,直接回车) Enter instance name: my-application (实例名) Enter name for d

Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站

文章来源:http://blog.csdn.net/jiftlixu/article/details/11676081 http://www.cnblogs.com/zhongweiv/archive/2013/01/07/https.html 目录 配置环境 了解HTTPS 配置CA证书服务器 新建示例网站并发布在IIS 新建自签名证书并配置HTTPS 故障排除 其它机器无法通过访问 配置环境 Windows版本:Windows Server 2008 R2 Enterprise Servic

IIS7.0 Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站

配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 了解HTTPS 为什么需要 HTTPS ? 在我们浏览网站时,多数网站的URL都是以HTTP开头,HTTP协议我们比较熟悉,信息通过明文传输; 使用HTTP协议有它的优点,它与服务器间传输数据更快速准确; 但是HTTP明显是不安全的,我们也可以注意到,当我们在使用邮件或者是在线支付时,都是使用HTTPS; HTTPS传输数据需要使用证书并对

StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全

StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全 一.StartSSL个人证书登录申请 1.StartSSL官网: 1.官方首页:http://www.startssl.com/ 2.控制面板:http://www.startssl.com/?app=12 2.第一次用StartSSL,先进入控制面板,先点击注册. 3.然后是填写你的个人基本信息,以部落的经验,主要地址填写详细,StartSSL会根据你的IP自动填入你所在的地址. 4.提交后你的邮箱会收到一个验证码. 5.用这

如何用第三方开源免费软件portecle从https网站上导出SSL的CA证书?

在我这篇文章中,我提到了如何用OpenSSL从https网站上导出SSL的CA证书? 这种方式不太直观,且需要用户自己手工拷贝,然后另存为文件,那么有没有更好更方便的工具呢? 幸运的是,有热心于开源项目的行业人士为我们提供了一个更方便简单的工具:portecle: 利用这个工具我们更能轻松的从HTTPS网站上导出SSL的CA证书.大家应该等待不急了吧. OK,不和大家饶弯子了,直接进入具体操作步骤. 步骤一: 下载该软件,大家可以从下面的网站下载这个软件.http://sourceforge.n