Object 內建對象

物件X509Req

X509Req 對像是用來建立x509 憑證請求的對象,屬於crypto模組

可以透過它的建構函式建立X509Req 的實例,在建構函式中可以傳入參數指定憑證的主題可分辨名稱和公鑰,例如:

1 2 3 4
var crypto = require('crypto'); let pky = crypto.PKey.from(private_pem); let req = new crypto.X509Req("CN=localhost,O=fibjs", pky);

可以透過此實例呼叫其父類別的方法和屬性來取得憑證請求物件的訊息,例如:

1 2 3 4 5
// return the DER format of the certificate request let derReq = req.der(); // return the PEM format of the certificate request let pemReq = req.pem();

也可以對X509Req 對象進行簽名,產生正式的憑證對象,例如:

1 2 3 4 5 6 7
let opt = { notBefore: new Date('2019-01-01') // valid from 2019-01-01 , notAfter: new Date('2029-12-31') // valid to 2029-12-31 }; let crt = req.sign("CN=myy.mkx", pky, opt); // CN=myy.mkx is the issuer of the certificate

要注意的是,X509Req 物件的作用是建立x509 憑證要求,而不是憑證本身,要取得有效的憑證還需要對其進行簽署。同時,簽署憑證所使用的公鑰必須和憑證請求中使用的公鑰一致。

繼承關係

建構函數

X509Req

X509Req 建構函數

1
new X509Req();

X509Req 建構函數,根據給定的資訊建立一個憑證請求

1 2 3
new X509Req(String subject, PKey key, Integer hash = hash.SHA256);

呼叫參數:

  • subject: String, 憑證的主題可分辨名稱
  • key:PKey, 證書的公鑰
  • hash: Integer, 憑證摘要演算法,預設為hash.SHA256

X509Req 建構函數,載入一個DER 格式的憑證請求

1
new X509Req(Buffer derReq);

呼叫參數:

  • derReq:Buffer, DER 格式的憑證請求

X509Req 建構函數,載入一個PEM 格式的憑證請求

1
new X509Req(String pemReq);

呼叫參數:

  • pemReq: String, DER 格式的憑證請求

成員屬性

subject

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

1
readonly String X509Req.subject;

publicKey

PKey, 取得憑證的公鑰

1
readonly PKey X509Req.publicKey;

sig_md

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

1
readonly Integer X509Req.sig_md;

sig_pk

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

1
readonly Integer X509Req.sig_pk;

成員函數

import

載入一個DER 格式的憑證請求

1
X509Req.import(Buffer derReq);

呼叫參數:

  • derReq:Buffer, DER 格式的憑證請求

載入一個PEM 格式的憑證請求

1
X509Req.import(String pemReq);

呼叫參數:

  • pemReq: String, PEM 格式的憑證請求

pem

傳回目前憑證請求的PEM 格式編碼

1
String X509Req.pem();

回傳結果:

  • String, 目前憑證請求的PEM 格式編碼

der

傳回目前憑證請求的DER 格式編碼

1
Buffer X509Req.der();

回傳結果:

  • Buffer, 目前憑證請求的DER 格式編碼

sign

簽署當前證書請求為正式證書

1 2 3
X509Cert X509Req.sign(String issuer, PKey key, Object opts = {}) async;

呼叫參數:

  • issuer: String, 簽名機構的可分辨名稱
  • key:PKey, 簽名機構的私鑰
  • opts: Object, 其他可選參數

回傳結果:

  • X509Cert, 返回簽名後的正式證書

opts 接收的欄位如下:

1 2 3 4 5 6 7 8
{ ca: false, // specify if the certificate is a CA certificate, default is false pathlen: -1, // specify the path length of the certificate, default is -1 notBefore: "", // specify the certificate valid from date, default is current date notAfter: "", // specify the certificate valid to date, default is 365 days after current date usage: "", // specify the certificate usage, accept: digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign type: "" // specify the certificate Netscape certificate type, accept: client, server, email, objsign, reserved, sslCA, emailCA, objCA }

toString

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

1
String X509Req.toString();

回傳結果:

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

toJSON

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

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

呼叫參數:

  • key: String, 未使用

回傳結果:

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