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

use*_*104 2 ssl android ssl-certificate truststore

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

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

这些是限制:

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

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

openssl req -newkey rsa:4096 \
        -x509 \
        -sha256 \
        -days 365 \
        -nodes \
        -out selfSignedCert.crt \
        -keyout newPrivate.key
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

Roc*_*dom 5

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

详细步骤: 1. 创建 CA 密钥

    sudo openssl genrsa -out  CA/rocketCA.key 1024
Run Code Online (Sandbox Code Playgroud)
  1. 创建 CA 证书请求
    openssl req -new -key CA/rocketCA.key -out CA/rocketCA.csr
Run Code Online (Sandbox Code Playgroud)
  1. 自签名CA证书
    sudo openssl x509 -req -days 3650 -in CA/rocketCA.csr -out CA/rocketCA.crt -signkey CA/rocketCA.key
Run Code Online (Sandbox Code Playgroud)
  1. 验证 CA 证书内容
    openssl x509 -in CA/hitenCA.crt -text
Run Code Online (Sandbox Code Playgroud)
  1. 使用完全限定的 DNS 名称(例如 Rocket.example.com)或使用 IPAddress 创建 Web 服务器私钥。当提示输入密码时,输入一个您可以记住的密码。
    sudo openssl genrsa -des3 -out server/keys/rocket.example.com.key 1024
Run Code Online (Sandbox Code Playgroud)
  1. 使用您用于私钥的相同完全限定的 DNS 名称/IP 创建 Web 服务器证书请求
    openssl req -new -key server/keys/rocket.example.com.key -out server/requests/rocket.example.com.csr
Run Code Online (Sandbox Code Playgroud)
  1. 使用 CA 密钥签署 Web 服务器证书
    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
Run Code Online (Sandbox Code Playgroud)
  1. 要验证 Web 服务器证书内容,请使用以下命令
    openssl x509 -in server/certificates/rocket.example.com.crt -text
Run Code Online (Sandbox Code Playgroud)

要寻找的关键值是:

Subject CN=rocket.example.com
Issuer CN=rocketCA
Run Code Online (Sandbox Code Playgroud)

详细步骤参考:(你不需要Mutual Auth部分)

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