Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpClient+;SSL+;可信证书_Java_Ssl_Httpclient - Fatal编程技术网

Java HttpClient+;SSL+;可信证书

Java HttpClient+;SSL+;可信证书,java,ssl,httpclient,Java,Ssl,Httpclient,我正在使用Commons HttpClient API连接到我们的一台服务器 此服务器使用SSL,还使用有效证书(由Verisign Trust Network颁发) 当我连接到服务器时,我的浏览器从不抱怨。但是我的java程序抛出 原因:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:未找到可信证书异常 我仍然有同样的问题,即使这个有效的证书被导入到我的java信任库中 我使用以下简单代

我正在使用Commons HttpClient API连接到我们的一台服务器

此服务器使用SSL,还使用有效证书(由Verisign Trust Network颁发)

当我连接到服务器时,我的浏览器从不抱怨。但是我的java程序抛出

原因:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:未找到可信证书异常

我仍然有同样的问题,即使这个有效的证书被导入到我的java信任库中

我使用以下简单代码连接到服务器

HttpClient httpclient = new HttpClient();
  GetMethod httpget = new GetMethod("https://www.ourserver.com/"); 
  try { 
    httpclient.executeMethod(httpget);
    System.out.println(httpget.getStatusLine());
  } finally {
    httpget.releaseConnection();
  }
注: 我非常确定我们的服务器使用的是可信证书,因为我的浏览器从未抱怨过


谢谢。

您是否已将Verisign根CA添加到您的信任库中?错误可能是因为颁发证书的CA不受信任


我不确定Java的truststore是否像大多数web浏览器一样自动配置为信任“默认”根CA(Verisign、Thawte等)。您可能必须使用keytool手动为每个用户启用信任,我假设您知道,因为您提到了导入到您的信任库中。

您是否已将Verisign根CA添加到您的信任库中?错误可能是因为颁发证书的CA不受信任


我不确定Java的truststore是否像大多数web浏览器一样自动配置为信任“默认”根CA(Verisign、Thawte等)。您可能必须使用keytool手动为每个用户启用信任,我假设您知道,因为您提到了导入到信任库中。

如果您使用的是较旧版本的java,即1.4,则verisign根CA可能不受信任。在这种情况下,您必须配置一个包含证书的信任库。这可以通过de'javax.net.ssl.trustStore'系统属性完成,但不建议这样做


您可以实现“org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory”以提供具有给定信任库的自定义SocketFactory。

如果您使用的是较旧版本的java,即1.4,则verisign根CA可能不受信任。在这种情况下,您必须配置一个包含证书的信任库。这可以通过de'javax.net.ssl.trustStore'系统属性完成,但不建议这样做


您可以实现“org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory”以提供具有给定信任库的自定义SocketFactory。

java确实信任许多CA证书。但是在旧的java版本中,并不是所有最近的CA都是可信的。我刚刚将这个证书单独导入到java的truststore中。我不知道如何为Verisign根CA执行此操作。我没有此根证书。还有一个问题,如果我在公开的Https站点上进行测试,我的程序运行良好。java确实信任很多CA证书。但是在旧的java版本中,并不是所有最近的CA都是可信的。我刚刚将这个证书单独导入到java的truststore中。我不知道如何为Verisign根CA执行此操作。我没有此根证书。还有一个问题,如果我在公开的Https站点上进行测试,我的程序运行良好。您使用的是什么版本的java,以及在对您的证书进行签名的证书链顶部的Verisign根证书的完整主题名是什么?我使用的是JDK 1.4。证书层次结构如下所示。。。1.内置对象令牌:Verisign Class 3公共主证书颁发机构2。威瑞信公司。我们的服务器..您使用的是什么版本的java,以及在为您的证书签名的证书链顶部的Verisign根证书的完整主题名是什么?我使用的是JDK 1.4。证书层次结构如下所示。。。1.内置对象令牌:Verisign Class 3公共主证书颁发机构2。威瑞信公司。我们的服务器。。