gpt4 book ai didi

android - 如何信任我的应用程序中的所有自签名证书

转载 作者:行者123 更新时间:2023-12-03 22:22:01 24 4
gpt4 key购买 nike

我有一个与我的主机服务器通信的 Android 应用。应用程序和服务器通过 SSL 进行通信。每年,我都必须更新主机服务器中的(自签名)证书。每次该证书到期时,我都必须通过创建自己的 TrustManager 并直接信任新证书来相应地更新我的 Android 应用程序。这是完美的工作。

问题是,我不想在每次证书过期时都修改我的 Android 应用。所以问题是,我如何信任我颁发的所有自签名证书?同样,只有我的自签名证书。

这些是限制:

  1. 只能使用自签名证书
  2. 我只能创建有效期最长为 12 个月的新证书

这就是我生成证书的方式:

openssl req -newkey rsa:4096 \
-x509 \
-sha256 \
-days 365 \
-nodes \
-out selfSignedCert.crt \
-keyout newPrivate.key

非常感谢您的帮助。

最佳答案

创建有效期为 10 年的 CA 证书。使用 CA 证书签署服务器证书。服务器证书的有效期应为 1 年或更短。在您的应用程序中包含 CA 证书并将其添加到您的自定义 TrustManager 中。现在您只需在 CA 证书到期时每 10 年发布一次新应用程序。您的 TrustManager 应该接受所有由您的 CA 证书签名的证书。

详细步骤:1. 创建 CA key

    sudo openssl genrsa -out  CA/rocketCA.key 1024
  1. 创建 CA 证书请求
    openssl req -new -key CA/rocketCA.key -out CA/rocketCA.csr
  1. 自签名 CA 证书
    sudo openssl x509 -req -days 3650 -in CA/rocketCA.csr -out CA/rocketCA.crt -signkey CA/rocketCA.key
  1. 验证 CA 证书内容
    openssl x509 -in CA/hitenCA.crt -text
  1. 使用完全限定的 DNS 名称(例如 Rocket.example.com)或使用 IPAddress 创建网络服务器私钥。当系统提示您输入密码时,输入您能记住的密码。
    sudo openssl genrsa -des3 -out server/keys/rocket.example.com.key 1024
  1. 使用与私钥相同的完全限定 DNS 名称/IP 创建 Web 服务器证书请求
    openssl req -new -key server/keys/rocket.example.com.key -out server/requests/rocket.example.com.csr
  1. 使用 CA key 签署网络服务器证书
    sudo openssl ca -days 3650 -in server/requests/rocket.example.com.csr -cert CA/rocketCA.crt -keyfile CA/rocketCA.key -out server/certificates/rocket.example.com.crt
  1. 要验证 Web 服务器证书内容,请使用以下命令
    openssl x509 -in server/certificates/rocket.example.com.crt -text

要查找的关键值是:

Subject CN=rocket.example.com
Issuer CN=rocketCA

详细步骤引用:(不需要Mutual Auth部分)

http://www.cafesoft.com/products/cams/ps/docs32/admin/ConfiguringApache2ForSSLTLSMutualAuthentication.html

关于android - 如何信任我的应用程序中的所有自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60218484/

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