diff --git a/src/imp/openssl.rs b/src/imp/openssl.rs
index 8fc4362..6693a78 100644
--- a/src/imp/openssl.rs
+++ b/src/imp/openssl.rs
@@ -109,6 +109,25 @@ fn load_android_root_certs(connector: &mut SslContextBuilder) -> Result<(), Erro
     Ok(())
 }
 
+#[cfg(target_env = "ohos")]
+fn load_ohos_root_certs(connector: &mut SslContextBuilder) -> Result<(), Error> {
+    use std::fs;
+
+    if let Ok(dir) = fs::read_dir("/etc/security/certificates") {
+        let certs = dir
+            .filter_map(|r| r.ok())
+            .filter_map(|e| fs::read(e.path()).ok())
+            .filter_map(|b| X509::from_pem(&b).ok());
+        for cert in certs {
+            if let Err(err) = connector.cert_store_mut().add_cert(cert) {
+                debug!("load_ohos_root_certs error: {:?}", err);
+            }
+        }
+    }
+
+    Ok(())
+}
+
 #[derive(Debug)]
 pub enum Error {
     Normal(ErrorStack),
@@ -320,6 +339,9 @@ impl TlsConnector {
         #[cfg(target_os = "android")]
         load_android_root_certs(&mut connector)?;
 
+        #[cfg(target_env = "ohos")]
+        load_ohos_root_certs(&mut connector)?;
+
         Ok(TlsConnector {
             connector: connector.build(),
             use_sni: builder.use_sni,