gpt4 book ai didi

java - 如何从 Java X509 证书获取 BasicConstraints 扩展

转载 作者:行者123 更新时间:2023-12-02 06:01:00 25 4
gpt4 key购买 nike

我想读取 Java X509Certificate 中的扩展 BasicConstraints(证书实现来自默认 JCE,因此它是 sun.security.x509.X509CertImpl)。

我想获取 BasicConstraint 扩展值来检查它是否是 CA:

X509Certificate certificate = ...
byte[] basicConstraint = certificate.getExtensionValue("2.5.29.19");

但这给了我包含 DEROctetString 的字节数组。打开它后,我得到了 2 个字节的字节数组。然而扩展 BasicConstraint 似乎定义为:

BasicConstraints := SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL
}

我已经看过X509Certificate::getBasicConstraints()返回 int 的方法。问题是当扩展不存在时它也会返回 -1

这就是为什么我正在寻找一种方法从 X509 证书获取此 ASN1 序列,以显式检查此 CA boolean 标志。

最佳答案

BasicConstraints 扩展的有效编码(在 OCTET STRING 内)是:

  1. CA=false:30 00

  2. CA=true,省略路径长度:30 03 01 01 FF

  3. CA=true,pathlen=0 到 127:30 06 01 01 FF 02 01 xx

  4. CA=true, pathlen >= 128:使用这么长的路径太愚蠢了,我忽略了这种情况,但如果您确实愿意,可以使用 DER 规则来解决

您很可能遇到的是情况 1。

关于java - 如何从 Java X509 证书获取 BasicConstraints 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432135/

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