Question

dans mon application j'utilise le SHA256 de l'émetteur Nom (x509CertImpl.getIssuerDN (). GetName ()) et le certificat numéro de série pour identifier un certificat, mais maintenant je me suis rendu compte que d'autres implémentations de X509Name comme le la mise en œuvre de la bibliothèque Bouncy Castle affiche autre chose quand je l'appelle bcX509Name.getName () si cet identifiant ne fonctionne pas pour moi ... ma question est de savoir comment pourrais-je obtenir un identifiant unique pour un X509Name ... peut-être un ou ASN.1 DER codé représentation des deux sera le même.

Était-ce utile?

La solution

Il ne ressort pas de la question de savoir si vous utilisez un java.security.cert.X509Certificate, ou une classe Bouncy Castle qui n'utilise les interfaces JCA.

Dans tous les cas, il devrait y avoir une méthode qui retourne un objet qui représente le nom de X.500 de l'émetteur. Cet objet doit avoir une méthode qui renvoie le codage ASN.1 du nom en tant que tableau d'octets. Utilisez ceci comme un élément de votre clé.

Si vous utilisez la norme X509Certificate ou Bouncy Castle de X509CertificateObject , utiliser quelque chose comme ça (et si vous n'utilisez pas une de ces classes, s'il vous plaît être plus précis):

X509Certificate x = ...;
byte[] issuer = x.getIssuerX500Principal().getEncoded();

Autres conseils

IssuerDN est une structure complexe et les bibliothèques différentes pourrait avoir des mécanismes de « sérialisation » à chaîne. Donc, vous pourriez avoir besoin de repenser votre approche. En général, il est autorisé à utiliser hachage du certificat lui-même (en totalité) + comparaison du numéro de série (pour apporter la possibilité de collision à presque 0).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top