2017-03-02 91 views
1

我有一個網站與多個Web應用程序,依賴於最終用戶與他們的x509客戶端證書進行身份驗證。我們注意到,當由.Net應用程序處理時,相同的證書顯示與由Java應用程序處理的主題DN不同的主題DN,當DN包含電子郵件地址屬性時。x509證書與主題中的電子郵件地址是不同的java .vs網絡

在.NET中,我看到了服務器變量CERT_SUBJECT這樣的:

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

在Java中,當我探討同一證書的X509證書對象(同一瀏覽器會話),主題是:

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

忽略的屬性相反的順序(這是一個衆所周知的現象),我們遇到的問題是,在Java中的電子郵件地址屬性是EMAILADDRESS而在.NET中相同的屬性顯示爲E

進一步挖,OpenSSL的示出了該輸出:

openssl.exe pkcs12 -in my.pfx -info 

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

當我認爲無論是在IE或Firefox證書存儲相同的證書而,它們顯示出E =,例如:

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

我知道在一些代碼中修改主題DN到另一個的「解釋」可能看起來微不足道,但問題是我們有兩個我們無法改變的COTS產品,並且在我們開始討論我想要解決的問題之前瞭解哪些(或兩者?)正確,如果是在某些層上導致了差異。 RFC似乎都參考EMAILADDRRESS,但據說IE和FF以及.Net應用似乎都使用「E」

任何人都可以解釋爲什麼會發生這種情況?

謝謝!

+0

由於在他的回答「E」和EmailAddress中提到的@pedrofb是同義詞。每個平臺可以指定它自己的OID翻譯。至於主題,他們並不完全不同。這只是一個相反的順序。 – pepo

回答

2

EEMAILADDRESS是同義詞。

當電子郵件地址嵌入主題專有名稱(不建議使用,應使用主題替代名稱擴展名)時,它使用PCKS#9(RFC2985)中定義的標識符pkcs-9-at-emailAdress

它意味着EmailAddress的未存儲與串EEMAILADDRESS,但作爲一個ASN.1結構與所述標識符1.2.840.113549.1.9.1,什麼.NET,Java或IE被示出是該屬性的表示。

如果要檢查證書的主題是否匹配,則需要比較每個RDN字段,而不是字符串。

+0

完美的是,謝謝你的回答,這是有道理的,並讓我有信心在其中一個或另一個上正常化(正如我說的,我實際上不能修改後端應用程序,這真是罪魁禍首,因爲它配置了一個正則表達式匹配字符串,而不是查看ASN.1值)。 –

+0

樂意提供幫助。考慮在你有足夠的聲望時將答案標記爲正確或滿意 – pedrofb

+0

完成!再次感謝您的好解釋! –

相關問題