gpt4 book ai didi

安卓 : Manually validating SSL Certificates

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:59 25 4
gpt4 key购买 nike

我有一个小型学校项目,我的老师要求我执行以下操作:

  1. 验证 URL 是否与证书匹配(并显示)
  2. 验证证书是否未过期(并显示日期)
  3. 显示所有签署证书的人
  4. 如果我在有限的时间范围内有时间的话可能会更多一些

我唯一能找到的是如何完全验证证书,而不是如何逐步手动验证。

谁能指出我正确的方向? :)

提前致谢

最佳答案

取决于您如何获得证书以及您想要验证的具体内容。无论是在使用 2way 身份验证的 SSL 连接期间,还是在客户端身份验证期间,或者只是您描述的步骤。

在 HTTP 连接的情况下,区别在于您可以获得证书的位置(以及哪些方法允许您这样做),如果您不需要它,请跳到底部:

HTTP这里有棘手的事情,因为 android 6.0 Apache HTTP 客户端已从 Android SDK 中删除,因此下面描述的所有信息都可能被弃用。但是,由于它是学校项目,您可能会大致了解如何完成: http://developer.android.com/intl/es/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

尽管如此,有一个名为 X509HostnameVerifier 的接口(interface) https://stuff.mit.edu/afs/sipb/project/android/docs/reference/org/apache/http/conn/ssl/X509HostnameVerifier.html

abstract boolean    verify(String host, SSLSession session)
abstract void verify(String host, X509Certificate cert)
abstract void verify(String host, SSLSocket ssl)
abstract void verify(String host, String[] cns, String[] subjectAlts)

在这里你可以访问服务器证书

自己的证书

问题是您希望如何为您的应用程序提供证书。有几种可能性:

  • 在应用中硬编码 PEM 字符串
  • 生成BKS keystore并在其中存储证书,将keystore保存在assets中
  • 在 Assets 中以 der 或 crt 格式保存证书

以上三个几乎相同,因为从它们中检索 X509Certificate 非常容易,您可以找到大量示例来实现这一点。

一旦获得所需的 X509Certificate 对象:

1.您可以从 X509Cert principals 中提取它 2. checkValidity() 用于验证,getNotAfter() getNotBefore() 方法用于准确日期3. X509Certificate 只能在签名者上有:getIssuerX500Principal()getIssuerDn()。如果你想上去,你需要证书链

关于安卓 : Manually validating SSL Certificates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35163485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com