[英]JSCEP with X509Certificate and Attribute Certificate
我想將JSCEP
與屬性證書(AC)一起使用,它們是X.509的一部分。 當我檢查Java庫時。 在java.security.cert
包中,包含抽象X509Certificate
,但是此證書從java.security.cert.Certificate
繼承了getPublicKey
方法,該方法不屬於AC。
我的問題:
X509Certificate
證書。 這樣在其他Java類(如JcaX509CertificateConverter
出現問題? AttributeCertificate
類,該類不繼承自java.security.cert.Certificate
嗎? X509Certificate
類表示一個公共密鑰證書 (PKC),而一個屬性證書 (AC)盡管是類似的(但不是那么多)結構,但沒有公共密鑰。 他們不是同一回事。
沒有公共密鑰就不能使用X509Certificate
證書,因為密鑰是其中的一部分。 如果看一下RFC的定義 ,您會看到它是必填字段:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
... lots of fields...
subjectPublicKeyInfo SubjectPublicKeyInfo,
... }
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
公鑰也是PKC定義的一部分:綁定身份和公鑰的某種東西,如RFC中所述 :
...公鑰證書,是將公鑰值綁定到主題的數據結構
在此RFC中定義了屬性證書 , 該 證書說明了與PKC的區別:
有些人經常混淆PKC和AC。 類推可以使區分清楚。 PKC可以看作是護照:它可以識別持有人,可以持續很長時間,而且獲取也不容易。 AC更像是入境簽證:它通常是由不同的機構簽發的,不會持續很長時間。 由於獲得入境簽證通常需要出示護照,因此獲得簽證可能是一個更簡單的過程。
在同一頁面中,您可以看到AC的結構與PKC有很大不同,因此AC的實現不應繼承自X509Certificate
。 盡管有一些類似的字段,但我認為它們之間的距離不足以證明繼承的合理性(它們也具有不同的用途和用途,這使我完全放棄了繼承)。
在您的情況下最好的方法:我建議使用現有的實現。 BouncyCastle就是其中之一 。 如果您不能使用外部庫,則可以使用BouncyCastle的代碼作為參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.