java - HttpClient+SSL 可信证书

标签 java ssl httpclient

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

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

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

Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found 异常。

即使将此有效证书导入我的 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();
  }

注意: 我非常确定我们的服务器使用的是受信任的证书,因为我的浏览器从未提示过。

谢谢。

最佳答案

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

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

关于java - HttpClient+SSL 可信证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2378986/

相关文章:

php - 安全站点上的 Cherry Framework "Font Awesome"问题

java - 间接 Apache HttpClient 和 javax.net.ssl.SSLException : hostname in certificate didn't match

java - android 中的 NullPointerException

security - 应用手动 AES 加密而不是使用 HTTPS

firebase 错误中的 java.lang.NoSuchMethodError

python - botocore.exceptions.SSLError : SSL validation failed on WIndows

c# - windows服务内存泄漏,IIS进程不死

android - 同样的proguard,在ant中工作,但在gradle中失败

java - Berkeley DB 中的外键

java - 声明类会导致 StackOverflow 错误