2017-03-02 3 views
1

J'ai un site Web avec plusieurs applications Web qui repose sur l'authentification de l'utilisateur final avec leur certificat client x509. Nous observons que le même certificat, lorsqu'il est traité par une application .Net, affiche un DN Objet différent que lorsqu'il est traité par une application Java, lorsque le DN contient un attribut d'adresse de messagerie.x509 CERT avec adresse e-mail dans le sujet sont différents dans java. Net NET

En .Net, je vois le serveur CERT_SUBJECT variables comme ceci:

C=US, S=Delaware, L=Wilmington, O=IDFC Dev, OU=Test, CN=Richard Sand, [email protected] 

En Java, quand j'explore l'objet de certificat X509 pour le même cert (même session du navigateur), le sujet est:

[email protected], CN=Richard Sand, OU=Test, O=IDFC Dev, L=Wilmington, ST=Delaware, C=US 

Ignorant l'ordre inverse des attributs (ce qui est un phénomène connu), le problème que nous avons est que dans Java l'attribut d'adresse e-mail est EMAILADDRESS alors que dans .Net le même attribut montre que E.

Creuser plus loin, OpenSSL montre cette sortie:

openssl.exe pkcs12 -in my.pfx -info 

subject=/C=US/ST=Delaware/L=Wilmington/O=IDFC Dev/OU=Test/CN=Richard Sand/[email protected] 

Alors que quand je considère le même certificat soit dans les magasins de certificats IE ou Firefox, ils montrent E =, par exemple:

E = [email protected] 
CN = Richard Sand 
OU = Test 
O = IDFC Dev 
L = Wilmington 
S = Delaware 
C = US 

I sachez qu'il peut sembler trivial de simplement caler dans un code pour changer une "interprétation" du DN Objet à l'autre, mais le problème est que nous avons deux produits COTS que nous ne pouvons pas modifier, et avant de commencer à pirater le problème que je veux comprendre lequel (ou sont les deux?) correct et si Il y a quelque chose sur une couche qui cause la divergence. Les RFC semblent tous faire référence à EMAILADDRRESS, mais comme dit à la fois IE et FF ainsi que l'application .Net semblent tous utiliser "E"

Quelqu'un peut-il expliquer pourquoi cela se produit?

Merci!

+0

Comme @pedrofb mentionné dans sa réponse 'E' et' EmailAddress' sont des synonymes. Chaque plateforme peut spécifier sa propre traduction d'OID. Quant aux sujets, ils ne sont pas complètement différents. C'est juste que l'on est dans l'ordre inverse. – pepo

Répondre

2

E et EMAILADDRESS sont synonymes. Lorsqu'une adresse de courrier électronique est incorporée dans le nom distinctif de l'objet (obsolète, il convient d'utiliser d'autres extensions de nom de sujet), elle utilise l'identificateur pkcs-9-at-emailAdress défini dans PCKS # 9 (RFC2985).

Cela signifie que le emailAddress n'est pas stocké avec une chaîne E ou EMAILADDRESS, mais comme une structure ASN.1 avec l'identifiant 1.2.840.113549.1.9.1, et ce que .NET, Java ou IE montrent une représentation de cet attribut.

Si vous voulez vérifier si l'objet d'un certificat correspond, vous devez comparer chaque champ RDN, pas la chaîne.

+0

Parfait, merci pour cette réponse, qui a du sens et me donne confiance pour normaliser sur l'un ou l'autre (comme dit je ne peux pas réellement modifier l'application back-end, qui est vraiment le coupable car il est configuré avec une regex pour correspondre sur la chaîne, et ne regarde pas les valeurs ASN.1). –

+0

Heureux de vous aider.Pensez à marquer la réponse comme correcte ou upvote lorsque vous avez assez de réputation – pedrofb

+0

Fait! Merci encore pour la bonne explication! –