[英]How to get BasicConstraints extension from Java X509 certificate
我想從 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 內)是:
CA=假: 30 00
CA=true, pathlen 省略: 30 03 01 01 FF
CA=true,pathlen=0 到 127: 30 06 01 01 FF 02 01 xx
CA=true, pathlen >= 128: 使用這么長的路徑太愚蠢了,我省略了這種情況,但是如果你真的想要,你可以使用 DER 規則來解決它
您很可能有情況 1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.