如何在nodejs中从https响应中获取ssl/tls证书

6rqinv9w  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(326)

我正在实现一个证书自动化服务,我想在部署后通过发出https请求来验证证书是否正确部署,https响应应该会为我带来新部署的证书的信息,如颁发日期和过期日期。
我知道这是套接字编程的一部分,所以我想知道是否有人知道有一些现有的包可以使用。
如果没有这样的包,我可能会更深入地学习一些握手流程,直接用Socket来做。
Ps:我所知道的最接近的事情是在JAVA中实现自定义x509信任管理器时,它确实支持从客户端验证证书。

jq6vz3qz

jq6vz3qz1#

https://www.npmjs.com/package/certnames包启发了我,然后我发现我可以直接用捆绑的tls模块来做,因为证书是通过tls层传输的,所以我们不需要发出http请求来获得它。

import * as tls from 'tls';

test('test', function (done) {
  let host = 'httpbin.org';
  let socket = tls.connect({
    port:443, 
    host,
    servername: host, // this is required in case the server enabled SNI
  }, () => {
    let x509Certificate = socket.getPeerX509Certificate();

    expect(x509Certificate.subject).toBe('CN=httpbin.org');

    done();
  });
});

相关问题