我使用java编写CA模块来创建和签署证书。当我运行代码时,出现错误“主题类类型无效。”,但在目标文件夹中我可以获得两个文件:rooca.crt和rootca.pfx。证书包含我设置的信息。也许代码结果是正确的,但我仍然想修复错误。
异常详情:
java.security.cert.CertificateException: Subject class type invalid.
at sun.security.x509.X509CertInfo.setSubject(Unknown Source)
at sun.security.x509.X509CertInfo.set(Unknown Source)
at com.koal.Test.createIssueCert(Test.java:124)
at com.koal.Test.main(Test.java:353)
我也遇到了类似的问题。此代码在 Java 1.6 上运行良好,但在 Java 1.8 上运行时会因此异常而失败。
我可以通过实施以下解决方案来解决此问题。
事实上,在Java 1.8中,似乎不必再将X500Name封装成CertificateSubjectName或CertificateIssuerName了。您可以将 X500Name 对象直接存储在 X509CertInfo 实例中。
改变这个
info.set(X509CertInfo.SUBJECT, new CertificateSubjectName(subject));
到info.set(X509CertInfo.SUBJECT, subject);
。
它对我有用。