移动端配置SSL证书,不同系统有不同的方法,以下是Android和iOS系统的常见配置方式:

Android系统

  • 使用Network Security Config(Android 7.0及以上)

    • 在项目的res/xml目录下创建一个network_security_config.xml文件。在文件中可以指定信任的证书、证书颁发机构等。例如:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
      <base-config>
          <trust-anchors>
              <certificates src="@raw/my_ca_cert" />
          </trust-anchors>
      </base-config>
    </network-security-config>
    • AndroidManifest.xml文件中,通过android:networkSecurityConfig属性引用刚才创建的配置文件:
    <application
    ...
      android:networkSecurityConfig="@xml/network_security_config">
    ...
    </application>
  • 使用TrustManager(支持较低版本Android)

    • 首先获取SSL证书,通常以.crt.pem格式存在。将证书转换为InputStream
    • 然后加载证书,创建KeyStore,并初始化SSLContext。以下是示例代码:
    InputStream certInput = // 输入你的证书文件
    KeyStore keyStore = KeyStore.getInstance("PKCS12");
    keyStore.load(certInput, "your_password".toCharArray());
    TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    trustManagerFactory.init(keyStore);
    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
    • 最后,在使用网络请求的地方,如OkHttpHttpsURLConnection中,应用这个sslContext

iOS系统

  • 准备SSL证书文件:获取以.cer.p12为扩展名的SSL证书文件。
  • 将SSL证书文件添加到项目中:把证书文件拖入Xcode项目中,确保勾选“Copy items if needed”选项,使证书文件包含在应用包中。
  • 编写网络请求代码:通常使用URLSession来管理网络请求。例如创建一个URL对象,指向API端点,然后创建一个数据任务来发送请求并处理响应。
  • 配置NSURLSession以使用SSL:实现一个自定义的URLSessionDelegate来处理服务器证书验证。示例代码如下:

    func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
      if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {
          if let serverTrust = challenge.protectionSpace.serverTrust {
              let credential = URLCredential(trust: serverTrust)
              completionHandler(.useCredential, credential)
          } else {
              completionHandler(.cancelAuthenticationChallenge, nil)
          }
      }
    }
  • 测试及验证SSL连接:运行应用程序,检查是否能成功连接到API,查看是否能从SSL保护的服务器返回数据。

标签: none

评论已关闭

SSL证书 SSL证书购买 SSL证书申请 SSL证书价格 泛域名证书 通配符证书 通配符SSL证书 https证书 便宜SSL证书 便宜证书 SSL证书多少钱 申请SSL 域名SSL sectigo证书