📅  最后修改于: 2023-12-03 14:44:40.575000             🧑  作者: Mango
Node.js中的tlsSocket.getCertificate()
方法用于在TLS或SSL连接上获取对等方的证书信息。它返回一个对象,该对象包含有关证书的详细信息。
tlsSocket.getCertificate([detailed])
detailed
(可选):一个布尔值,确定是否返回详细的证书信息。默认为false
。该方法返回一个包含对等方证书信息的对象。如果没有证书可用,或者没有建立连接,则返回null
。
const tls = require('tls');
const options = {
// 设置用于建立TLS连接的参数
};
const tlsSocket = tls.connect(options, () => {
console.log('Connected');
const certificate = tlsSocket.getCertificate();
console.log(certificate);
});
输出如下所示:
Connected
{
subject: {
C: 'US',
ST: 'California',
L: 'San Francisco',
O: 'Example Inc',
OU: 'IT',
CN: 'example.com'
},
issuer: {
C: 'US',
ST: 'California',
L: 'San Francisco',
O: 'Example Inc',
OU: 'IT',
CN: 'example.com'
},
subjectaltname: 'example.com',
infoAccess: {},
subjectaltname: [ 'DNS:example.com' ],
modulus: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
exponent: 'XXXXXXXX',
valid_from: 'Jul 1 00:00:00 2022 GMT',
valid_to: 'Jan 1 00:00:00 2023 GMT',
fingerprint: 'XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX',
ext_key_usage: [ 'clientAuth', 'serverAuth' ],
serialNumber: 'XXXXXXXXXXXXXXXXXXXX',
raw: [ <Buffer 30 82 ... > ]
}
tlsSocket.getCertificate()
方法返回的证书信息对象包含以下字段:
subject
:证书的主题信息,包含国家、州、城市、组织等。issuer
:证书的颁发者信息,与主题信息格式相同。subjectaltname
:证书的备用主题名称。infoAccess
:证书的信息访问字段。modulus
:证书的公钥模数,以十六进制字符串表示。exponent
:证书的公钥指数,以十六进制字符串表示。valid_from
:证书的有效起始日期。valid_to
:证书的有效终止日期。fingerprint
:证书的指纹值。ext_key_usage
:证书的扩展密钥用途。serialNumber
:证书的序列号。raw
:证书的原始二进制数据。通过使用tlsSocket.getCertificate(true)
,可以获取更详细的证书信息。但需要注意,获取详细信息可能会降低性能。
请注意,tlsSocket.getCertificate()
只能在TLS或SSL连接被建立之后调用。如果在TLS握手之前调用,将返回null
。
以上就是Node.js tlsSocket.getCertificate()
方法的详细介绍。