📜  Node.js tlsSocket.getCertificate() 方法(1)

📅  最后修改于: 2023-12-03 14:44:40.575000             🧑  作者: Mango

Node.js tlsSocket.getCertificate() 方法


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()方法的详细介绍。

参考文档:Node.js tlsSocket.getCertificate()