物件X509Cert
X509Cert 是crypto模組中表示x509 憑證的對象,這個對象主要包括了從一個DER 或PEM 格式的憑證資料以及憑證鏈資料建構出來的憑證資訊和方法,可以進行憑證的解析和驗證等操作
透過X509Cert 物件可以取得到憑證的主題名稱,頒發者名稱,透過時間,到期時間,ca 驗證等等信息,還可以匯出憑證的DER 編碼,取得憑證的公鑰以及簽章演算法等等資訊。
如果想要載入一個證書,可以使用以下程式碼從DER/PEM 格式的證書資料建立X509Cert 物件:
1
2
3
4const crypto = require('crypto');
const certData = require('fs').readFile('server.crt');
const cert = new crypto.X509Cert(certData);
當然,X509Cert 物件也提供了直接匯入憑證的方法:
1const cert = crypto.X509Cert.import(certData);
然後你就可以透過cert 進行各種證書的操作,例如取得證書的有效期限時間:
1
2var strDate = cert.notBefore.toLocaleTimeString() + " " + cert.notBefore.toLocaleDateString() + " ~ " + cert.notAfter.toLocaleTimeString() + " " + cert.notAfter.toLocaleDateString();
console.log(`证书有效时间: ${strDate}`)
繼承關係
建構函數
X509Cert
X509Cert 建構函數
1new X509Cert();
X509Cert 建構函數,載入一個DER 格式的證書
1new X509Cert(Buffer derCert);
呼叫參數:
- derCert:Buffer, DER 格式的證書
X509Cert 建構函數,載入一個CRT/PEM 格式的證書
1new X509Cert(String txtCert);
呼叫參數:
- txtCert: String, CRT/PEM 格式的證書
成員屬性
version
Integer, 取得憑證的版本
1readonly Integer X509Cert.version;
serial
String, 取得憑證的序號
1readonly String X509Cert.serial;
issuer
String, 取得憑證授權者的可分辨名稱
1readonly String X509Cert.issuer;
subject
String, 取得憑證的主題可分辨名稱
1readonly String X509Cert.subject;
notBefore
Date, 取得證書的生效時間
1readonly Date X509Cert.notBefore;
notAfter
Date, 取得證書的到期時間
1readonly Date X509Cert.notAfter;
ca
Boolean, 取得證書是否為ca 證書
1readonly Boolean X509Cert.ca;
pathlen
Integer, 取得憑證的pathlen
1readonly Integer X509Cert.pathlen;
usage
String, 取得憑證的使用範圍
1readonly String X509Cert.usage;
結果為全部或部分以下:digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign
type
String, 取得憑證的Netscape 憑證類型
1readonly String X509Cert.type;
結果為全部或部分以下內容:client, server, email, objsign, reserved, sslCA, emailCA, objCA
sig_md
Integer, 取得憑證的摘要演算法
1readonly Integer X509Cert.sig_md;
sig_pk
Integer, 取得憑證的簽章演算法
1readonly Integer X509Cert.sig_pk;
publicKey
PKey, 取得憑證的公鑰
1readonly PKey X509Cert.publicKey;
next
X509Cert, 取得憑證鏈中得下一個憑證
1readonly X509Cert X509Cert.next;
成員函數
import
載入一個DER 格式的證書,可多次調用
1X509Cert.import(Buffer derCert);
呼叫參數:
- derCert:Buffer, DER 格式的證書
載入一個CRT/PEM 格式的證書,可多次調用
1X509Cert.import(String txtCert);
呼叫參數:
- txtCert: String, CRT/PEM 格式的證書
loadRootCerts
載入自備的缺省根證書
1X509Cert.loadRootCerts();
verify
使用當前證書鏈驗證給定的證書
1Boolean X509Cert.verify(X509Cert cert) async;
呼叫參數:
- cert: X509Cert, 給定需要驗證的證書
回傳結果:
- Boolean, 如果驗證成功則回傳True
pem
以PEM 格式匯出已載入的證書
1String X509Cert.pem(Boolean all = true);
呼叫參數:
- all: Boolean, 指定是否輸出全部證書,預設為true
回傳結果:
- String, 以陣列方式匯出憑證鏈
der
以DER 格式匯出已載入的證書
1Buffer X509Cert.der();
回傳結果:
- Buffer, 以陣列方式匯出憑證鏈
clear
清空已經載入的憑證
1X509Cert.clear();
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String X509Cert.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value X509Cert.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值