HarmonyOS鸿蒙Next中HTTPS网络请求如何设置忽略证书验证

HarmonyOS鸿蒙Next中HTTPS网络请求如何设置忽略证书验证 现在HTTP请求,报错{"code":2300060,"message":"SSL peer certificate or SSH remote key was not OK"}

我使用的三方库httpclient

原有安卓APP 在请求https服务的时候,忽略了证书的验证
使用的方法:
.sslSocketFactory(getSocketFactory(), PhoenixTrustManager())
.hostnameVerifier(HostnameVerifier { _, _ -> true })

鸿蒙是否有类似的方法,如果没有的话,我该怎么解决这个问题?


更多关于HarmonyOS鸿蒙Next中HTTPS网络请求如何设置忽略证书验证的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

更多关于HarmonyOS鸿蒙Next中HTTPS网络请求如何设置忽略证书验证的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,如果你需要在HTTPS网络请求中忽略证书验证,可以使用HttpClient模块,并通过自定义SSLContextTrustManager来实现。具体步骤如下:

  1. 创建自定义的TrustManager,该TrustManager会信任所有证书。
  2. 使用自定义的TrustManager初始化SSLContext
  3. 将自定义的SSLContext应用于HttpClient

以下是示例代码:

import http from '@ohos.net.http';
import ssl from '@ohos.security.cert';

// 自定义TrustManager,信任所有证书
class TrustAllManager implements ssl.X509TrustManager {
  checkServerTrusted(chain: ssl.X509Certificate[], authType: string): void {
    // 信任所有证书,不进行验证
  }

  checkClientTrusted(chain: ssl.X509Certificate[], authType: string): void {
    // 信任所有证书,不进行验证
  }

  getAcceptedIssuers(): ssl.X509Certificate[] {
    return [];
  }
}

// 初始化SSLContext
const sslContext = ssl.createSSLContext("TLSv1.2");
const trustAllManager = new TrustAllManager();
sslContext.init(null, [trustAllManager], null);

// 创建HttpClient并应用自定义SSLContext
const httpClient = http.createHttp();
httpClient.setSSLContext(sslContext);

// 发起HTTPS请求
const request = http.createHttpRequest();
request.url = "https://example.com";
httpClient.request(request, (err, data) => {
  if (err) {
    console.error("Request failed:", err);
  } else {
    console.log("Response data:", data);
  }
});

通过这种方式,你可以在HTTPS网络请求中忽略证书验证。请注意,忽略证书验证会降低安全性,仅应在测试或开发环境中使用。

在HarmonyOS鸿蒙Next中,若需忽略HTTPS证书验证,可通过自定义TrustManager实现。首先,创建TrustManager,接受所有证书;然后,使用该TrustManager初始化SSLContext,并设置为HttpsURLConnection的默认配置。此方法适用于开发环境,生产环境不建议使用,会降低安全性。

回到顶部