由弹性城堡生成的CA x.509在Android上被视为用户证书

时间:2014-01-09 13:10:10

标签: java android x509certificate bouncycastle

我使用以下代码生成根CA:

public static X509Certificate buildRootCert(KeyPair keyPair)
throws Exception {
    X509v1CertificateBuilder certBldr = new JcaX509v1CertificateBuilder(
    new X500Name("CN=Root"),
    BigInteger.valueOf(1),
    new Date(System.currentTimeMillis()),
    new Date(System.currentTimeMillis() + 1000 * 3600 * 24),
    new X500Name("CN=Root"), keyPair.getPublic());

    ContentSigner signer = new JcaContentSignerBuilder("SHA1withRSA")
    .setProvider("BC").build(keyPair.getPrivate());

    return new JcaX509CertificateConverter().setProvider("BC")
    .getCertificate(certBldr.build(signer));
}

之后我还需要2个步骤来获得CA Cert

  1. 使用PEMWriter
  2. 打印base64代码
  3. 将输出复制到root.crt文件。
  4. Windows将其识别为CA证书并显示警告 ...此certifiacate不受信任... ,但当我尝试将此证书安装到Android时,它会显示

    该软件包包含:一个用户证书

    继续安装,但用户可信列表

    中不存在证书

    这是生成自签名CA的正确方法吗?

1 个答案:

答案 0 :(得分:-1)

我添加了基本约束,并开始将其识别为CA.