当前位置: 首页 > 知识库问答 >
问题:

如何使用ssl证书创建okhttp

长孙哲
2023-03-14

我创建了两个类:-这一个扩展了OkHttp,并有一个新方法getUnsafeOkHttpClient()。

public class GetExampleOkHttp extends OkHttpClient {
    public OkHttpClient getUnsafeOkHttpClient() {
        try {
            // Create a trust manager that does not validate certificate chains
            final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
                @Override
                public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)
                        throws CertificateException {
                }
                @Override
                public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)
                        throws CertificateException {
                }
                @Override
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return new java.security.cert.X509Certificate[] {};
                }
            } };
            // Install the all-trusting trust manager
            final SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
            // Create an ssl socket factory with our all-trusting manager
            final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
            OkHttpClient.Builder builder = new OkHttpClient.Builder();
            builder.sslSocketFactory(sslSocketFactory);
            builder.hostnameVerifier(new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            });
            OkHttpClient okHttpClient = builder.build();
            return okHttpClient;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

和其他主要类别:

class ExampleOkHttpMain  
    public static void main(String[] args) throws IOException {     
        GetExampleOkHttp example = new GetExampleOkHttp();          
        example.getUnsafeOkHttpClient();

             Request request = new Request.Builder()
                .url("https://lachuzhnikov.kiev.ua/test.txt")
                .build();
            Response response = example.newCall(request).execute();
            System.out.println(response.body().string());       
    }
}

但我仍然有一个错误:

线程“main”javax中出现异常。网ssl。SSLHandshakeException:太阳。安全验证器。ValidatorException:PKIX路径生成失败:sun。安全供应商。证书路径。SunCertPathBuilderException:无法在sun上找到请求目标的有效证书路径。安全ssl。警报。sun上的getSSLException(未知源)。安全ssl。SSLSocketImpl。在太阳下致命(未知来源)。安全ssl。握手器。fatalSE(未知来源)

共有1个答案

卫宁
2023-03-14

3:备份Java\jdk...\jre\lib\Security\cacerts(例如:C:\Program Files\Java\jdk1.7.0_79\jre\lib\Security)
4:将cacerts复制到另一个文件夹
5:端口打开文件cacerts(传递:更改)在步骤2中导入cer并保存
6:复制并替换新的cacertsJava\jdk...\jre\lib\Security\cacerts

 类似资料:
  • 问题内容: 我已经看过4个(是,四个)教程,但仍然不知道如何使它工作。 在我的Glassfish 4.1.1服务器中设置为HTTPS配置的第二个HTTP侦听器之后,我尝试创建证书,因此在浏览器中没有出现安全错误。问题是,我只是无法使keytool正常工作;无论我做什么,它都会弄乱并抛出奇怪的错误。例如,它找不到许多指南推荐的某些命令。 我可以猜测该工具在Java 8或其他版本中发生了变化,我真的不

  • 我已经看了4个(是的,四个)教程,仍然不知道如何使这工作。 编辑:说真的,我正因此陷入困境。我只是什么都不能做:cacerts密码不是典型的“changeit”,我不能在密钥库之外获取密钥,因此我不能用证书做任何事情。

  • 我想用Java语言创建一个X509证书,然后从中提取公钥。 我在网上搜索了一下,发现了很多代码示例,但都有错误(未知变量或未知类型),或者有很多警告说:“方法...来自类型...是不建议使用的”等。 例如,以下代码不起作用的原因: 谁能告诉我如何使用纯Java或Bouncy Castle创建证书,然后从中获取公钥? 谢谢大家。

  • 我想生成一个自签名SSL证书,并将其与Tomcat一起使用。 我怎么能这样呢?

  • 问题内容: 我正在使用具有多个唯一标识的从属进程的分布式应用程序,这些进程将通过启用SSL的套接字与主应用程序进行通信。该应用程序用Java编写。 我需要一些帮助来了解SSLSocket,或者更确切地说,是它们使用的证书。 我正在寻找的人可以告诉我我是否正确理解了证书链的基本工作原理,但是我也不会拒绝代码示例。 我想要一个服务器本身具有CA签名证书的设置,每个从属服务器都将获得由主应用程序创建的自

  • 问题内容: 如何使用Python解码经过pem编码的(base64)证书?例如,这来自github.com: 根据ssl-shopper的说法,应该是这样的: 如何使用python获取此纯文本? 问题答案: Python的标准库,即使是最新版本,也不包含任何可解码X.509证书的内容。但是,附加软件包确实支持此功能。引用文档中的示例: 另一个可选的附加软件包是。这是围绕OpenSSL C API的