Ordem do Nome Distinto X500Principal

Eu estou usando o lib Bouncycastle para gerar certificados de solicitações PKCS10 usando a classe X509v3CertificateBuilder.

Ele retorna um objeto X509CertificateHolder que contém o certificado gerado. Se eu chamar getIssuer no portador, ele retornará o nome distinto do emissor na ordem correta (o mesmo retornará se eu chamar getSubjectX500Principal () no certificado do emissor), se eu analisar a versão codificada do portador usando o java CertificateFactory, o getIssuerX500Principal () método do certificado gerado retorna o DN na ordem oposta, o que está errado?

Aqui está um código de exemplo do que estou tentando fazer:

X509CertificateHolder holder = certBuilder.build(sigGen);
holder.getIssuer(); //Returns the DN in the correct order (same as in issuer cert)

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(holder.getEncoded()));

cert.getIssuerX500Principal().getName(); //Returns issuer DN in reverse order

questionAnswers(1)

yourAnswerToTheQuestion