HarmonyOS鸿蒙Next中请求报错2300060远程服务器SSL证书或SSH密钥不正确怎么忽略掉直接请求成功

HarmonyOS鸿蒙Next中请求报错2300060远程服务器SSL证书或SSH密钥不正确怎么忽略掉直接请求成功

2300060 远程服务器SSL证书或SSH密钥不正确

3 回复

为了安全考虑,除特殊情况,一般不建议跳过SSL校验,如果必须跳过,可以参考以下方法忽略证书校验:

  • 网络请求使用RCP (Remote Communication Kit),可以通过配置SecurityConfiguration中的RemoteValidation为skip跳过证书校验。可参考如下代码:

    import { rcp } from '[@kit](/user/kit).RemoteCommunicationKit';
    import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
    
    const session = rcp.createSession();
    const request = new rcp.Request('https://xxx.xxx.xxx/xxx', 'GET');
    request.configuration = {
      security: {
        remoteValidation: 'skip', // 'system' | 'skip' |CertificateAuthority | ValidationCallback。`system`表示使用系统CA验证远端服务器身份,值固定为`system`字符串,是未配置时的默认值。`skip`表示跳过验证远端服务器身份流程,值固定为`skip`字符串。
      },
    };
    session.fetch(request).then((rep: rcp.Response) => {
      console.info(`Response succeeded: ${rep}`);
    }).catch((err: BusinessError) => {
      console.error(`Response err: Code is ${err.code}, message is ${err.message}`);
    });
    
  • 网络请求使用Network Kit,可以设置RemoteValidation为’skip’(跳过SSL证书校验) (需要API18及以上才支持)。

  • 网络请求使用Axios(Axios底层基于Network Kit实现),自API18开始可以通过RemoteValidation配置使用系统CA或跳过验证远程服务器CA,用法样例请参考ohos_axios

更多关于HarmonyOS鸿蒙Next中请求报错2300060远程服务器SSL证书或SSH密钥不正确怎么忽略掉直接请求成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中忽略SSL证书验证,可使用http模块的setExtraOptions方法配置SSLSocketFactory。示例代码:

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

let httpRequest = http.createHttp();
httpRequest.setExtraOptions({
  sslSocket: {
    disabledVerify: true // 禁用证书验证
  }
});
httpRequest.request(
  "https://example.com",
  (err: BusinessError, data: http.HttpResponse) => {
    // 处理回调
  }
);

注意:该方法仅适用于测试环境,正式发布需使用有效证书。

在HarmonyOS Next中遇到SSL证书校验错误(2300060)时,可以通过以下方式处理:

  1. 对于HttpURLConnection方式: 在创建连接后添加以下代码:
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setHostnameVerifier((hostname, session) -> true);
  1. 对于OkHttp方式:
OkHttpClient client = new OkHttpClient.Builder()
    .hostnameVerifier((hostname, session) -> true)
    .build();

注意:忽略SSL验证会降低安全性,建议仅用于开发测试环境。生产环境应确保使用有效的SSL证书。

回到顶部