物件X509Req
X509Req 對像是用來建立x509 憑證請求的對象,屬於crypto模組
可以透過它的建構函式建立X509Req 的實例,在建構函式中可以傳入參數指定憑證的主題可分辨名稱和公鑰,例如:
1
2
3
4var 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
7let 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 建構函數
1new X509Req();
X509Req 建構函數,根據給定的資訊建立一個憑證請求
1
2
3new X509Req(String subject,
PKey key,
Integer hash = hash.SHA256);
呼叫參數:
- subject: String, 憑證的主題可分辨名稱
- key:PKey, 證書的公鑰
- hash: Integer, 憑證摘要演算法,預設為hash.SHA256
X509Req 建構函數,載入一個DER 格式的憑證請求
1new X509Req(Buffer derReq);
呼叫參數:
- derReq:Buffer, DER 格式的憑證請求
X509Req 建構函數,載入一個PEM 格式的憑證請求
1new X509Req(String pemReq);
呼叫參數:
- pemReq: String, DER 格式的憑證請求
成員屬性
subject
String, 取得憑證的主題可分辨名稱
1readonly String X509Req.subject;
publicKey
PKey, 取得憑證的公鑰
1readonly PKey X509Req.publicKey;
sig_md
Integer, 取得憑證的摘要演算法
1readonly Integer X509Req.sig_md;
sig_pk
Integer, 取得憑證的簽章演算法
1readonly Integer X509Req.sig_pk;
成員函數
import
載入一個DER 格式的憑證請求
1X509Req.import(Buffer derReq);
呼叫參數:
- derReq:Buffer, DER 格式的憑證請求
載入一個PEM 格式的憑證請求
1X509Req.import(String pemReq);
呼叫參數:
- pemReq: String, PEM 格式的憑證請求
pem
傳回目前憑證請求的PEM 格式編碼
1String X509Req.pem();
回傳結果:
- String, 目前憑證請求的PEM 格式編碼
der
傳回目前憑證請求的DER 格式編碼
1Buffer X509Req.der();
回傳結果:
- Buffer, 目前憑證請求的DER 格式編碼
sign
簽署當前證書請求為正式證書
1
2
3X509Cert 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]",物件可以根據自己的特性重新實現
1String X509Req.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value X509Req.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值