首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有X509Certificate和属性证书的JSCEP

带有X509Certificate和属性证书的JSCEP
EN

Stack Overflow用户
提问于 2017-04-24 10:34:53
回答 1查看 454关注 0票数 1

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

我的问题:

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-25 18:50:31

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

没有公钥就不能使用X509Certificate,因为密钥是它的一部分。如果您查看一下RFC定义,您会发现它是一个强制字段:

代码语言:javascript
复制
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中所述

...public密钥证书,它是将公钥值绑定到主题的数据结构。

属性证书是在这个RFC中定义的,它告诉PKC与PKC的区别:

有些人经常混淆PKCs和ACs。用类比可以清楚地区分这一点。PKC可以被看作是护照:它识别持卡人,往往持续很长时间,不应该是微不足道的获得。AC更像是入境签证:它通常是由不同的机构签发的,不会持续很长时间。由于获得入境签证通常需要出示护照,因此获得签证可能是一个更简单的过程。

在同一页中,您可以看到AC's结构PKC非常不同,因此AC的实现不应继承于X509Certificate。虽然有一些类似的字段,但我认为它们不够接近,不足以证明继承是合理的(而且它们也有不同的用途和用途,这使我完全放弃继承)。

在您的情况下,最好的方法是:我建议使用现有的实现。BouncyCastle就是其中之一。如果不能使用外部库,则可以使用庞西卡塞尔密码作为引用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43585819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档