我使用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)
答案 0 :(得分:9)
我遇到了类似的问题。此代码适用于Java 1.6,并且在Java 1.8上运行时失败并出现此异常。
我可以通过实施the following solution来修复此问题。
事实上,在Java 1.8中,您似乎不必再将X500Name封装到CertificateSubjectName或CertificateIssuerName中。您可以将X500Name对象直接存储在X509CertInfo实例中。
答案 1 :(得分:1)
更改此“ info.set(X509CertInfo.SUBJECT,新的CertificateSubjectName(subject));” 到info.set(X509CertInfo.SUBJECT,subject);对我有用