当我尝试添加SSL证书时,为什么方法generateCertificate返回CertificateException?

时间:2016-12-07 10:45:33

标签: java ssl-certificate keystore

我正在尝试接受我的SSL证书进行API测试。 为此,我用IE导出我的证书(第二个选项:x.509二进制编码基础64(* .cer) 我使用此命令行在密钥库中添加了它:

 keytool -importcert -file certificate.cer -keystore "C:\Program
 Files\Java\jdk1.8.0_111\jre\lib\security\cacerts" -alias "certificatealias"

要列出密钥库并检查我是否有证书条目,我使用以下命令行:

keytool -list -v -keystore "C:\Program
     Files\Java\jdk1.8.0_111\jre\lib\security\cacerts"  > java_cacerts.txt

我的证书条目在里面:

  

Nom d'alias:certificatealias Datedecréation:6déc。 2016年类型   d'entrée:trustedCertEntry

     

Propriétaire:CN = Test,O = Test Emetteur:   CN =测试,O =测试Numérodesérie:XXXX   Valide du:xxx au:xxxx

     

Empreintes du certificat:MD5:Xxxxxx SHA1:xxxx SHA256:   XXXX

     

Nom de l'algorithme de signature:SHA256withRSA Version:3

在我的代码中,我有:

FileInputStream in = new FileInputStream("certificate.jks");
BufferedInputStream bis = new BufferedInputStream(in);
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(bis, "changeit".toCharArray());

Enumeration<String> aliases = ks.aliases();
while (aliases.hasMoreElements()) {
    String alias = aliases.nextElement();
    System.out.println("alias: " + alias);
    System.out.println("bis.available: " +bis.available());
    System.out.println("bis: "+ bis.toString());

    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    X509Certificate x509 = (X509Certificate) cf.generateCertificate(bis);
    KeyStore.Entry newEntry = new KeyStore.TrustedCertificateEntry(x509);
    ks.setEntry("certificatealias", newEntry, null);
}

我收到了一个错误:

  

java.security.cert.CertificateException:无法解析证书:   java.io.IOException:空输入

在我的控制台中,我有:

  

别名:certificatealias

     

bis.available:0
  bis:java.io.BufferedInputStream@8xx9d4

错误发生在cf.generateCertificate(bis)

为什么我有这个错误? cf和bis不为null或为空......

我看到它可能是错误的密钥库类型(请参阅帖子3 years ago)。 KeyStore.getDefaultType()返回JKS。那应该是好的,不是吗? 我已经用命令行检查了一下: keytool -list -keystore <keystore_location>我的类型是:

  

类型de fichierdeclés:JKS

     

Fournierur de fichierdeclés:SUN

任何提示都会非常有用!

0 个答案:

没有答案