You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android项目中添加SSL证书及.jks信任库文件?

在Android项目中配置SSL证书实现安全连接

别担心,我来一步步帮你搞定这个SSL配置的事儿,刚接触的时候确实容易懵,咱们慢慢捋:

1. 先把证书文件安置好

  • 打开你的Android项目,找到app/src/main/res目录,要是没有raw文件夹就新建一个——这个目录专门放原生资源文件,很适合存证书。
  • 把同事给你的.crt公钥文件和.jks信任库文件都复制到raw里。注意文件名要全小写,别用空格或特殊字符,比如改成server_cert.crt和my_trust_store.jks,避免后续代码里出奇怪的问题。

2. 方式一:用JKS信任库配置SSL(推荐)

如果你的项目用OkHttp(现在Android开发大多用这个),可以这么加载信任库:

// 加载JKS信任库
val trustStore = KeyStore.getInstance("JKS")
val inputStream = resources.openRawResource(R.raw.my_trust_store)
// 这里替换成同事给你的JKS密码
trustStore.load(inputStream, "your_jks_password".toCharArray())

// 创建信任管理器
val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(trustStore)

// 初始化SSL上下文
val sslContext = SSLContext.getInstance("TLS")
sslContext.init(null, trustManagerFactory.trustManagers, SecureRandom())

// 配置OkHttpClient,后续用它发请求就会走SSL了
val okHttpClient = OkHttpClient.Builder()
    .sslSocketFactory(sslContext.socketFactory, trustManagerFactory.trustManagers[0] as X509TrustManager)
    .build()

要是用原生的HttpsURLConnection,逻辑差不多:

val trustStore = KeyStore.getInstance("JKS")
val inputStream = resources.openRawResource(R.raw.my_trust_store)
trustStore.load(inputStream, "your_jks_password".toCharArray())

val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(trustStore)

val sslContext = SSLContext.getInstance("TLS")
sslContext.init(null, trustManagerFactory.trustManagers, SecureRandom())

val url = URL("https://你的服务器地址")
val connection = url.openConnection() as HttpsURLConnection
connection.sslSocketFactory = sslContext.socketFactory
// 接下来就像之前那样读取数据就行

3. 方式二:直接用CRT公钥文件

如果你不想依赖JKS,也可以直接把CRT证书导入信任管理器:

// 读取CRT证书
val certInputStream = resources.openRawResource(R.raw.server_cert)
val certificateFactory = CertificateFactory.getInstance("X.509")
val certificate = certificateFactory.generateCertificate(certInputStream) as X509Certificate

// 创建临时信任库并添加证书
val trustStore = KeyStore.getInstance(KeyStore.getDefaultType())
trustStore.load(null, null)
trustStore.setCertificateEntry("server_cert", certificate)

// 后面的步骤和方式一一样:创建信任管理器、初始化SSL上下文、配置客户端
val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(trustStore)

val sslContext = SSLContext.getInstance("TLS")
sslContext.init(null, trustManagerFactory.trustManagers, SecureRandom())

// 配置OkHttpClient或HttpsURLConnection即可

几个要注意的点

  • 一定要确认JKS的密码是对的,不然加载信任库会直接失败。
  • 如果你们服务器用的是自签名证书(不是CA颁发的),这样配置后就不会再出现SSL握手失败的错误了。
  • 要是用Retrofit,只需要把配置好的OkHttpClient传给Retrofit Builder就行:
val retrofit = Retrofit.Builder()
    .baseUrl("https://你的服务器地址")
    .client(okHttpClient)
    .addConverterFactory(GsonConverterFactory.create())
    .build()

内容的提问来源于stack exchange,提问作者user9267819

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:51:31