HarmonyOS鸿蒙Next中测试环境网络请求绕过SSL证书验证

HarmonyOS鸿蒙Next中测试环境网络请求绕过SSL证书验证 测试环境是否提供绕过ssl证书的api呢?

3 回复

自签名rcp请求库中有个remoteValidation可以设置为skip

参考链接如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/remote-communication-rcp-V5#section1597118916425

更多关于HarmonyOS鸿蒙Next中测试环境网络请求绕过SSL证书验证的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,如果需要绕过SSL证书验证进行网络请求,可以通过配置HttpClientSSLContext来实现。具体步骤如下:

  1. 首先,创建一个自定义的TrustManager,该TrustManager将信任所有的证书,不进行任何验证。

  2. 然后,使用这个自定义的TrustManager初始化一个SSLContext

  3. 最后,将这个SSLContext配置到HttpClientSSLSocketFactory中。

以下是实现代码示例:

import { HttpClient, SSLContext, TrustManager, X509TrustManager } from '@ohos.net.http';

// 创建自定义的TrustManager
const trustAllCerts: TrustManager[] = [{
    checkServerTrusted: (chain: X509Certificate[], authType: string) => {
        // 信任所有证书,不做验证
    },
    checkClientTrusted: (chain: X509Certificate[], authType: string) => {
        // 信任所有证书,不做验证
    },
    getAcceptedIssuers: () => {
        return [];
    }
}] as TrustManager[];

// 初始化SSLContext
const sslContext = new SSLContext("TLS");
sslContext.init(null, trustAllCerts, null);

// 创建HttpClient并配置SSLSocketFactory
const httpClient = new HttpClient.Builder()
    .sslSocketFactory(sslContext.getSocketFactory())
    .build();

通过以上步骤,你可以在HarmonyOS鸿蒙Next中绕过SSL证书验证进行网络请求。需要注意的是,这种方式仅在测试环境中使用,生产环境中应严格验证SSL证书以确保通信安全。

在HarmonyOS鸿蒙Next中,如果你需要在测试环境下绕过SSL证书验证,可以通过配置OkHttpTrustManager来实现。以下是一个示例代码:

import okhttp3.OkHttpClient;
import javax.net.ssl.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class UnsafeOkHttpClient {
    public static OkHttpClient getUnsafeOkHttpClient() {
        try {
            final TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
                    @Override
                    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        return new X509Certificate[]{};
                    }
                }
            };

            final SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

            return new OkHttpClient.Builder()
                    .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0])
                    .hostnameVerifier((hostname, session) -> true)
                    .build();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

请注意,这种方法仅适用于测试环境,生产环境中应始终启用SSL证书验证以确保通信安全。

回到顶部