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

我使用以下代码生成根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打印base64代码
  2. 将输出复制到root.crt文件。

Windows将其识别为CA证书并显示警告…此certifiacate不受信任… ,但当我尝试将此证书安装到Android时,它显示

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

安装已继续,但cert不存在于用户可信列表中

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

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