簡體   English   中英

如何從 Java X509 證書獲取 BasicConstraints 擴展

[英]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 內)是:

  1. CA=假: 30 00

  2. CA=true, pathlen 省略: 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM