HarmonyOS 自定义SSL双向认证报错,SSL is null

static async tlsCheckRemoteCertificate(serverCert: cert.X509Cert): Promise<any> {
  let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
  try {
  const res = await connection.getAddressesByName('https://xxx.cn')
  const net = res[0]
  net.port = 8012
  await tls.bind(net)
  const data = await tls.getRemoteCertificate()

  let encodingBlob: cert.EncodingBlob = {
    // 将证书数据从string类型转换成Unit8Array
    data: data.data,
    encodingFormat: cert.EncodingFormat.FORMAT_DER
  };
  const x509Cert = await cert.createX509Cert(encodingBlob)
  const pubKey = serverCert.getPublicKey();
  await x509Cert.verify(pubKey)
} catch (e) {
  tls.close()
}
}

执行到 const data = await tls.getRemoteCertificate()时,报2303501,SSL is null

HarmonyOS
2024-12-27 16:30:32
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

开发者获取c5-uat.xxx.cn:8012证书链数据,经过对比发现#1证书,内容跟本地保存的服务端证书一致,所以应该是#3是CA证书。

tls.connect接口ca参数应该填写#3CA证书,然后通过getRemoteCertificate获取远端证书后,并创建证书对象,可以获取其公钥数据:x509Cert.getPublicKey().getEncoded().data

跟本地保存的证书公钥数据serverCert.getPublicKey().getEncoded().data,把两个公钥打印出来可以发现公钥是一致的。

分享
微博
QQ
微信
回复
2024-12-27 19:21:07
相关问题
RNOH SSL双向认证实现
287浏览 • 1回复 待解决
请求成功之后返回SSL is null
975浏览 • 1回复 待解决
网络请求怎么进行SSL证书认证?
3640浏览 • 1回复 待解决
HarmonyOS 网络请求报错SSL错误
214浏览 • 1回复 待解决
如何使用ssl连接到PolarDB ?
3369浏览 • 1回复 待解决
HarmonyOS 网络请求跳过ssl证书校验
183浏览 • 1回复 待解决
HarmonyOS http请求配置双向认证证书
16浏览 • 1回复 待解决
HarmonyOS关于mqtt不支持ssl协议问题
658浏览 • 2回复 待解决