HarmonyOS 鸿蒙Next在应用中使用openssl时系统SSL证书的几个疑问解答

HarmonyOS 鸿蒙Next在应用中使用openssl时系统SSL证书的几个疑问解答

Q1: 鸿蒙系统中是否自带SSL证书? 鸿蒙系统自带了SSL的pem证书。

Q2: 鸿蒙系统中SSL证书的路径是否固定?具体路径是什么? 鸿蒙系统中的证书路径是固定的,当前路径为: /system/etc/ssl/certs/cacert.pem

Q3: 使用过程中如何判断错误是因为SSL证书引起的? 在使用OpenSSL时,若遇到SSL/TLS连接错误,可通过以下方法判断是否由SSL证书问题引起:

  1. 查看错误日志 OpenSSL中证书相关错误关键词有以下几个:
  • unable to get local issuer certificate (缺少中间CA证书)
  • certificate has expired (证书过期)
  • self signed certificate (自签名证书不受信任)
  • hostname mismatch (域名不匹配)
  • unable to verify the first certificate (证书链不完整)
  1. 手动验证证书文件 当前系统提供的SSL证书只涉及到有效性,通过交叉编译出来的openssl可执行程序进行查看:
openssl x509 -in /system/etc/ssl/certs/cacert.pem -noout -dates         # 执行命令
notBefore=Sep  1 12:00:00 1998 GMT                                      # 输出的信息
notAfter=Jan 28 12:00:00 2028 GMT
  1. 通过代码获取证书的相关信息
...
SSL *ssl = ...; // SSL连接对象
long verify_result = SSL_get_verify_result(ssl);
if (verify_result != X509_V_OK) {
   const char *error = X509_verify_cert_error_string(verify_result);
   printf("证书验证失败: %s (错误码 %ld)\n", error, verify_result);
}
...

常见的SSL证书相关错误码如下:

  • X509_V_ERR_CERT_HAS_EXPIRED(10) : 证书过期
  • X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT(18) : 自签名证书
  • X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY(20) : 缺少中间CA证书
  • X509_V_ERR_HOSTNAME_MISMATCH(62) : 域名不匹配

更多关于HarmonyOS 鸿蒙Next在应用中使用openssl时系统SSL证书的几个疑问解答的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在鸿蒙Next中使用OpenSSL时,系统SSL证书的路径为/system/etc/security/cacerts/。鸿蒙Next采用BoringSSL作为默认SSL库,但兼容OpenSSL API。系统证书默认由华为CA机构签发,应用可通过X509TrustManager接口管理证书验证。开发者需在config.json中声明ohos.permission.INSTALL_CERTIFICATE权限才能访问证书存储。鸿蒙Next不支持直接修改系统证书库,但允许应用通过SecurityComponent接口添加临时信任证书。

更多关于HarmonyOS 鸿蒙Next在应用中使用openssl时系统SSL证书的几个疑问解答的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


关于HarmonyOS Next中使用OpenSSL和系统SSL证书的几个关键点:

  1. 证书路径确认:系统确实预置了SSL证书,路径为/system/etc/ssl/certs/cacert.pem,这是一个固定位置。需要注意的是,在HarmonyOS Next中访问系统路径可能需要申请相应权限。

  2. 证书验证方法:

  • 推荐使用OpenSSL的SSL_get_verify_result()函数获取验证结果
  • 常见错误码如证书过期(10)、自签名(18)、缺少中间CA(20)等都有明确定义
  • 可通过X509_verify_cert_error_string()直接获取可读的错误描述
  1. 调试建议:
  • 可以先通过命令行工具验证证书有效性
  • 在代码中建议添加详细的错误处理逻辑
  • 注意系统证书可能会随版本更新而变化
  1. 特殊场景处理:
  • 如需使用自定义证书,建议单独维护证书文件
  • 对证书有效期敏感的场合需要定期检查

这些信息应该能帮助开发者正确处理HarmonyOS Next中的SSL证书相关问题。

回到顶部