Object 內建對象

物件X509Cert

X509Cert 是crypto模組中表示x509 憑證的對象,這個對象主要包括了從一個DER 或PEM 格式的憑證資料以及憑證鏈資料建構出來的憑證資訊和方法,可以進行憑證的解析和驗證等操作

透過X509Cert 物件可以取得到憑證的主題名稱,頒發者名稱,透過時間,到期時間,ca 驗證等等信息,還可以匯出憑證的DER 編碼,取得憑證的公鑰以及簽章演算法等等資訊。

如果想要載入一個證書,可以使用以下程式碼從DER/PEM 格式的證書資料建立X509Cert 物件:

1 2 3 4
const crypto = require('crypto'); const certData = require('fs').readFile('server.crt'); const cert = new crypto.X509Cert(certData);

當然,X509Cert 物件也提供了直接匯入憑證的方法:

1
const cert = crypto.X509Cert.import(certData);

然後你就可以透過cert 進行各種證書的操作,例如取得證書的有效期限時間:

1 2
var strDate = cert.notBefore.toLocaleTimeString() + " " + cert.notBefore.toLocaleDateString() + " ~ " + cert.notAfter.toLocaleTimeString() + " " + cert.notAfter.toLocaleDateString(); console.log(`证书有效时间: ${strDate}`)

繼承關係

建構函數

X509Cert

X509Cert 建構函數

1
new X509Cert();

X509Cert 建構函數,載入一個DER 格式的證書

1
new X509Cert(Buffer derCert);

呼叫參數:

  • derCert:Buffer, DER 格式的證書

X509Cert 建構函數,載入一個CRT/PEM 格式的證書

1
new X509Cert(String txtCert);

呼叫參數:

  • txtCert: String, CRT/PEM 格式的證書

成員屬性

version

Integer, 取得憑證的版本

1
readonly Integer X509Cert.version;

serial

String, 取得憑證的序號

1
readonly String X509Cert.serial;

issuer

String, 取得憑證授權者的可分辨名稱

1
readonly String X509Cert.issuer;

subject

String, 取得憑證的主題可分辨名稱

1
readonly String X509Cert.subject;

notBefore

Date, 取得證書的生效時間

1
readonly Date X509Cert.notBefore;

notAfter

Date, 取得證書的到期時間

1
readonly Date X509Cert.notAfter;

ca

Boolean, 取得證書是否為ca 證書

1
readonly Boolean X509Cert.ca;

pathlen

Integer, 取得憑證的pathlen

1
readonly Integer X509Cert.pathlen;

usage

String, 取得憑證的使用範圍

1
readonly String X509Cert.usage;

結果為全部或部分以下:digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign


type

String, 取得憑證的Netscape 憑證類型

1
readonly String X509Cert.type;

結果為全部或部分以下內容:client, server, email, objsign, reserved, sslCA, emailCA, objCA


sig_md

Integer, 取得憑證的摘要演算法

1
readonly Integer X509Cert.sig_md;

sig_pk

Integer, 取得憑證的簽章演算法

1
readonly Integer X509Cert.sig_pk;

publicKey

PKey, 取得憑證的公鑰

1
readonly PKey X509Cert.publicKey;

next

X509Cert, 取得憑證鏈中得下一個憑證

1
readonly X509Cert X509Cert.next;

成員函數

import

載入一個DER 格式的證書,可多次調用

1
X509Cert.import(Buffer derCert);

呼叫參數:

  • derCert:Buffer, DER 格式的證書

載入一個CRT/PEM 格式的證書,可多次調用

1
X509Cert.import(String txtCert);

呼叫參數:

  • txtCert: String, CRT/PEM 格式的證書

loadRootCerts

載入自備的缺省根證書

1
X509Cert.loadRootCerts();

此憑證內容源自:http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt


verify

使用當前證書鏈驗證給定的證書

1
Boolean X509Cert.verify(X509Cert cert) async;

呼叫參數:

  • cert: X509Cert, 給定需要驗證的證書

回傳結果:

  • Boolean, 如果驗證成功則回傳True

pem

以PEM 格式匯出已載入的證書

1
String X509Cert.pem(Boolean all = true);

呼叫參數:

  • all: Boolean, 指定是否輸出全部證書,預設為true

回傳結果:

  • String, 以陣列方式匯出憑證鏈

der

以DER 格式匯出已載入的證書

1
Buffer X509Cert.der();

回傳結果:

  • Buffer, 以陣列方式匯出憑證鏈

clear

清空已經載入的憑證

1
X509Cert.clear();

toString

傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現

1
String X509Cert.toString();

回傳結果:

  • String, 傳回物件的字串表示

toJSON

傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合

1
Value X509Cert.toJSON(String key = "");

呼叫參數:

  • key: String, 未使用

回傳結果:

  • Value, 傳回包含可JSON 序列化的值