android 信任没有cer文件的自签名证书?

rkue9o1l  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(164)

所以我正在开发的这个移动的应用程序主要是在Flutter中,但我想保留一些原生Android和Swift中的API回调,但问题是实际的API调用可以是自定义服务器。在意识到Flutter无法读取Android上手动安装的用户证书后,我试图找到一种方法来像Chrome一样做,并询问用户“您是否要信任此证书y/n”,但是我想不出在Java上实现方法。
在flutter方面,HttpClient有一个回调部分,称为badCertificateCallback,如果应用程序中的任何地方证书不安全,它将自动引用那里,无论证书在哪里被调用,目前在flutter方面,我设置了它,以便如果用户信任某个链接,它将信任证书信息,在Android上我能做些类似的事情吗?我发现的大多数其他解决方案要么希望信任所有证书,这并不理想,要么要求用户在某个地方有一个cer文件。

9jyewag0

9jyewag01#

您可以选择以下几种方式:

  • 您可以将自签名证书添加到客户端的信任库中。
  • 或者您使用自己的证书颁发机构签署服务器的证书签署请求(CSR),并将该证书颁发机构的证书添加到客户端的信任库中。即使在这种情况下,您也可以决定直接将服务器的证书添加到信任库中,但为什么要使用CA呢?
  • 或者使用官方证书颁发机构(比如encrypt、geocerts、digicert ......)对证书进行签名,因为官方证书颁发机构已经安装在客户端的信任库中,所以不需要额外的步骤。

简短回答:如果没有证书,您将无法成功。但它不必是.cer文件。
由于您拒绝"无证书检查/全部信任":检查证书是更好的方法,即使您使用的是自签名证书。但是客户端需要一些东西来进行检查,并且数据通常在证书中传输。您可以将这样的证书存储为不同的文件格式。检查此页面:https://www.ssls.com/knowledgebase/what-are-certificate-formats-and-what-is-the-difference-between-them/

相关问题