当前位置: 首页 > 面试题库 >

JAVA-使用SSL证书和HTTPS的简单GET请求

狄信然
2023-03-14
问题内容

我有一个扩展名为’.pfx’的文件以及此证书的密码。

我需要做的是将简单的GET请求发送到Web服务并读取响应正文。

我需要实现类似于以下方法:

String getHttpResponse(String url, String certificateFile, String passwordToCertificate){
    ...
}

我还尝试使用openssl将证书转换为“无密码”格式:

Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM:
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

因此,my方法的替代实现可能是:

String getHttpResponse(String url, String certificateFile){
    ...
}

非常感谢您的帮助,我花了半天的时间进行了搜索,但是我还没有找到可以帮助我的示例,似乎我在理解一些关于SSL和其他内容的基本假设时遇到了问题。


问题答案:

我终于找到了一个很好的解决方案(无需创建自定义SSL上下文):

String getHttpResponseWithSSL(String url) throws Exception {
    //default truststore parameters
    System.setProperty("javax.net.ssl.trustStore", "/usr/lib/jvm/java-6-openjdk/jre/lib/securitycacerts");
    System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
    System.setProperty("javax.net.ssl.trustStoreType", "JKS");

    //my certificate and password
    System.setProperty("javax.net.ssl.keyStore", "mycert.pfx");
    System.setProperty("javax.net.ssl.keyStorePassword", "mypass");
    System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");


    HttpClient httpclient = new HttpClient();

    GetMethod method = new GetMethod();
    method.setPath(url);

    int statusCode = httpclient.executeMethod(method);
    System.out.println("Status: " + statusCode);

    method.releaseConnection();

    return method.getResponseBodyAsString();
}


 类似资料:
  • 问题内容: 我正在尝试使用安全套接字层(HTTPS)与Java中的PHP脚本建立连接,但是我发现为了确保最大的安全性/有效性,我必须将网站使用的SSL证书导入到我的应用程序中…我不知道该怎么做。 如果有帮助,我的SSL证书不是自签名的,而是由StartSSL提供的,并且我正在使用Eclipse IDE。 有人能指出我正确的方向吗?即,我需要什么文件,应该在哪里导入它们,以及在Java中需要什么代码

  • 也许我会在这里找到帮助。我想在spring boot应用程序上启用SSL。我的配置如下: 服务器:端口:8999 SSL:enabled:true key-store:classpath:keystore.jks key-store-password:mypass key-password:mypass 问题是我的密钥库。我已将*crt文件导入别名为“tomcat”的密钥存储库: 但是,我仍然无法

  • 嗨,我想用Swift发出Https请求。当前im通过ip地址访问本地服务器。通过访问证书,本地服务器有一个SSL证书。要向服务器发出请求,当前我正在这样做。 我已经在plist中使用了上述代码来发出请求 在plist中,我已经给出了这样的结果,但我仍然得到了这样的错误

  • 问题内容: 我正在使用Java 6,并尝试使用客户端证书针对远程服务器创建一个。 服务器正在使用自签名的根证书,并且要求提供受密码保护的客户端证书。我已将服务器根证书和客户端证书添加到在中找到的默认Java密钥库中。密钥库文件的名称似乎表明不应将客户端证书放入其中? 无论如何,将根证书添加到此存储解决了臭名昭著的问题 但是,我现在停留在如何使用客户端证书上。我尝试了两种方法,但都无济于事。 首先,