`
小斌张
  • 浏览: 89551 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

https访问-不需要导入证书的方式

    博客分类:
  • java
阅读更多
httpclient 通过https访问网站的方式有两种,一种是需要导入证书,一种是不需要的。导入证书的安全性比较高,但是如果网站证书更新了,证书需要重新导入。下面的例子是不安全的:

package net.ben;


import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.util.ArrayList;
import java.util.List;

public class HttpClientTest {
    public static void main(String[] args) throws Exception {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        try {
            TrustManager easyTrustManager = new X509TrustManager() {

                public void checkClientTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
                    //To change body of implemented methods use File | Settings | File Templates.
                }

                public void checkServerTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
                    //To change body of implemented methods use File | Settings | File Templates.
                }

                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return new java.security.cert.X509Certificate[0];  //To change body of implemented methods use File | Settings | File Templates.
                }
            };

            SSLContext sslcontext = SSLContext.getInstance("TLS");
            sslcontext.init(null, new TrustManager[]{easyTrustManager}, null);
            SSLSocketFactory sf = new SSLSocketFactory(sslcontext);

            Scheme sch = new Scheme("https", 443, sf);

            httpClient.getConnectionManager().getSchemeRegistry().register(sch);

            HttpGet httpget = new HttpGet("https://www.xxx.com/");

            System.out.println("executing request" + httpget.getRequestLine());

            HttpResponse response = httpClient.execute(httpget);
            HttpEntity entity = response.getEntity();

            System.out.println("----------------------------------------");
            System.out.println(response.getStatusLine());
            if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
            }
            String content = EntityUtils.toString(entity);
            System.out.println(content);


        } finally {
            httpClient.getConnectionManager().shutdown();
        }

    }

}


分享到:
评论

相关推荐

    java实现读取证书访问https接口

    这个过程中,可能会遇到证书不受信任、证书链不完整等问题,此时需要根据实际情况调整信任管理器或导入缺失的中间证书。对于自签名证书,可能还需要在代码中绕过默认的信任检查。 总结来说,Java实现读取证书访问...

    win-acme 网站https 证书免费申请工具

    2. **IIS集成**:win-acme与Windows的IIS服务器紧密集成,可以自动配置IIS站点的HTTPS设置,包括导入证书和更新绑定。 3. **定期续订**:由于Let's Encrypt的证书有效期为90天,win-acme提供了自动续订功能,确保在...

    win1共享 win5-6的证书,Windows证书服务

    - 使用相同的步骤,即通过`Win+R`打开`mmc`,找到“个人”存储下的“所有任务”>“导入证书”,选择共享文件夹内的证书。 7. **创建自签名证书**: - 在证书服务器中右键选择“创建自签证书”。 - 完成创建后,...

    C++实现向系统中导入证书

    此外,为了安全起见,应确保DLL在导入证书时遵循最佳实践,例如限制对私钥的访问权限。 总之,通过C++和DLL接口在Windows系统中导入.pem证书涉及了文件操作、编码解码、证书解析以及Windows API的调用等多个环节。...

    WAS9或WAS8配置HTTPS证书详细教程

    本教程将详细介绍如何在 WAS 9 或 WAS 8 上配置 HTTPS 证书,以实现安全的 HTTPS 访问。 首先,我们需要创建一个经过证书颁发机构 (CA) 认证的密钥库文件。这通常涉及到以下几个步骤: 1. 使用 Java 提供的 `...

    httpclient访问需要客户端认证数字证书的https接口的处理方法

    当访问需要客户端认证的HTTPS接口时,通常需要提供数字证书以证明客户端的身份。本篇文章将深入探讨如何使用HttpClient来处理这种情况。 HttpClient是一个强大的Java库,用于执行HTTP请求。然而,当遇到需要客户端...

    httpclient来进行https访问

    要使`httpclient`支持HTTPS访问,首先需要配置SSL上下文。这通常涉及到证书管理、密钥存储以及信任管理等环节。 ### 关键技术细节 #### 3.1 配置SSL上下文 在`httpclient`中使用HTTPS,首先要解决的是SSL上下文的...

    was8.5.5配置https步骤.docx

    在WAS 8.5.5中配置HTTPS主要分为以下几个步骤:生成证书、导入证书、配置SSL端点以及部署应用。 #### 三、生成证书 1. **在本机生成证书** - 打开命令行窗口,执行以下命令生成密钥库文件(本例中用于测试目的):...

    GM-T 0118-2022 浏览器数字证书应用接口规范

    - **证书安装与管理**:包括证书的导入、导出、查看等功能。 - **证书验证**:提供对数字证书有效性的检查方法,如验证证书是否过期、是否被吊销等。 - **加密解密操作**:支持基于数字证书的加密解密功能。 - **...

    Jmeter HTTPS接口测试证书导入过程图解

    导入证书到JMeter的过程如下: 1. 打开JMeter,点击菜单栏的“选项”(Options) -> “SSL Manager”。 2. 在弹出的“SSL Manager”窗口中,点击“导入…”按钮,选择你之前导出的证书文件。 3. 输入证书的密码(如果...

    F5 v11 ssl证书卸载及http跳转

    1. **导入证书和密钥** - 登录到F5设备后,进入“系统”->“文件管理”->“SSL证书列表”。 - 导入**Server证书**、**CA证书**以及**KEY**。 - 在导入**KEY**时,需要定义名称并选择文件来源。 - 对于**证书**的...

    使用JSONP完成HTTP和HTTPS之间的跨域访问

    - 如果需要双向认证,则还需要为客户端生成证书并将其导入到服务器的信任证书列表中。这一步对于简单的跨域请求不是必需的。 2. **配置Tomcat以支持HTTPS**: - 在Tomcat的`conf/server.xml`文件中,找到或添加`...

    IOS,Android SSL双向认证HTTPS方式请求及配置证书

    - Android中,证书可能需要导入到KeyStore系统中,使用特定的KeyChain API访问。 对于错误处理,如证书不受信任或证书过期,需要在`IOS`的`NSURLSessionDelegate`或`Android`的`SSLSocketFactory`中捕获并处理。 ...

    keytool - 密钥和证书管理工具

    Web服务器需要将生成的私钥和证书导入到服务器的密钥库中。 5. **源码解析**: - 虽然Keytool是Java的一部分,但其源码并不是公开的。然而,了解其工作原理可以帮助开发者实现自定义的安全工具。 6. **安全性考虑*...

    Keytool与数字证书

    导入证书到浏览器 - **示例步骤**: 1. 访问HTTPS站点时,浏览器可能会弹出安全警告。 2. 将自签名证书或第三方CA颁发的证书导入到浏览器中。 3. 重启浏览器后再次访问HTTPS站点,此时应该不会出现安全警告。 ##...

    k8s部署kuboard(支持https认证)

    同时,我们需要配置Ingress规则来定义外部访问Kuboard的方式。在`ingress.yaml`文件中,定义了Ingress对象,指定服务名、端口和主机名,如`kuboard.com`。 为了实现HTTPS认证,我们需要生成相关的证书和密钥。这里...

    tomcat同时使用http和https访问的配置方法

    在IT行业中,Tomcat是一个广泛使用的...这将允许你的应用根据需要提供安全或非安全的访问方式,为用户提供更好的安全体验。在部署时,确保考虑所有安全最佳实践,如定期更新证书,使用强密码,并限制对密钥库的访问。

    CA证书颁发

    同时,CA证书颁发也可以确保数据传输的安全,因为客户机和网站服务器之间的通信可以使用SSL/TLS加密方式,以保护数据的安全。 在实验中,我们使用了Win2003服务器,安装了Web服务和DNS服务,以提供域名称服务。我们...

    windows_server2008PKI与证书服务应用(图)

    - **安装证书**:将下载的证书导入到 Web 服务器的个人证书存储库中。通常,可以通过“Internet 信息服务(IIS)管理器”中的相应选项来完成此操作。 #### 六、为 WEB 站点配置 SSL **步骤5:为 WEB 站点配置 SSL*...

Global site tag (gtag.js) - Google Analytics