2014-01-09 34 views
0

我使用以下代碼來生成的根CA:CA X.509是看到的Android作爲用戶證書

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證書

  1. 打印base64代碼證書PEMWriter
  2. 複製輸出到root.crt文件。

的Windows將它識別爲CA證書,並顯示警告...這certifiacate不被信任......,但是當我試圖安裝該證書到Android這表明

包中包含:一個用戶證書

安裝時進行,但證書沒有出現在用戶信任列表

這是生成自簽名CA的正確方法嗎?

+0

Android有兩個證書類別:系統和用戶。系統類別不可更改;用戶類別可以同時擁有證書和根證書。 – 2014-01-09 14:14:42

回答