gpt4 book ai didi

java - 带有 X509 证书和属性证书的 JSCEP

转载 作者:行者123 更新时间:2023-11-29 08:36:41 30 4
gpt4 key购买 nike

我想将 JSCEP 与属性证书 (AC) 一起使用,它们是 X.509 的一部分。当我检查 Java 库时。在 java.security.cert 包中包含一个抽象的 X509Certificate 但这个证书继承了 java.security.cert 的 getPublicKey 方法.Certificate,它不是 AC 的一部分。

我的问题:

  • 是否可以在没有公钥的情况下使用 X509Certificate。这样其他 java 类如 JcaX509CertificateConverter 就不会出现问题了吗?
  • 我是否应该实现自己的 AttributeCertificate 类,而不是继承自 java.security.cert.Certificate
  • 最佳实践方法是什么?

最佳答案

X509Certificate 类代表一个公钥证书 (PKC),而一个属性证书 (AC),虽然它是一个类似的(但不是那么多)结构,没有公钥。它们不是一回事。

没有公钥就不能使用 X509Certificate,因为公钥是其中的一部分。如果你看一下 RFC's definition ,您会看到它是必填字段:

Certificate  ::=  SEQUENCE  {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }

TBSCertificate ::= SEQUENCE {
... lots of fields...
subjectPublicKeyInfo SubjectPublicKeyInfo,
... }

SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }

公钥也是 PKC 定义的一部分:绑定(bind)身份和公钥的东西,如 stated in the RFC :

...public key certificates, which are data structures that bindpublic key values to subjects


属性证书this RFC中定义,它说明了与 PKC 的区别:

Some people constantly confuse PKCs and ACs. An analogy may makethe distinction clear. A PKC can be considered to be like apassport: it identifies the holder, tends to last for a long time,and should not be trivial to obtain. An AC is more like an entryvisa: it is typically issued by a different authority and does notlast for as long a time. As acquiring an entry visa typicallyrequires presenting a passport, getting a visa can be a simplerprocess.

在同一页面中,您可以看到 AC's structurePKC 非常不同,因此 AC 的实现不应继承自 X509Certificate。虽然有一些相似的领域,但我认为它们还不够接近以证明继承是合理的(而且它们也有不同的目的和用途,这让我完全放弃继承)。

针对您的情况的最佳方法:我建议使用现有的实现。 BouncyCastle is one of them .如果你不能使用外部库,你可以使用 BouncyCastle's code作为引用。

关于java - 带有 X509 证书和属性证书的 JSCEP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43585819/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com