我尝试使用pem或hostname从ssl获取所有证书,但它只返回根证书。
我试着遵循代码,
const conf = {
insecureSkipVerify: true
}
const conn = tls.connect(443, 'www.facebook.com', conf, () => {
const certs = conn.getPeerCertificate()
console.log(`\n PeerCertificate: ${JSON.stringify(certs)}`)
})
conn.on('error', (err: any) => {
console.log('Error in Dial', err)
})
conn.on('close', () => {
conn.destroy()
})
字符串
与pem文件我尝试以下代码块
// get the SSL certificates from x5u url
const certificates = (await axios.get(x5u)).data as string
// getting object of a PEM encoded X509 Certificate.
const certificate = new X509Certificate(certificates)
console.log('X509Certificate :-', JSON.stringify(certificate.toLegacyObject()))
型
而不是返回完整的密钥链路径,其仅返回根证书。我正在检查SSL-Checker中的所有叶到根证书
在golang中,它可以很容易地返回所有的证书,但在nodejs中则不然。我在Golang中使用了以下代码,并且运行良好
conf := &tls.Config{
InsecureSkipVerify: true,
}
conn, err := tls.Dial("tcp", "www.smartsensesolutions.com:443", conf)
if err != nil {
log.Println("Error in Dial", err)
return
}
defer conn.Close()
certs := conn.ConnectionState().PeerCertificates
for _, cert := range certs {
fmt.Printf("\nDNSNames: %s \n", cert.DNSNames)
fmt.Printf("Common Name: %s \n", cert.Issuer.CommonName)
fmt.Printf("Expiry: %s \n", cert.NotAfter.Format("2006-January-02"))
fmt.Printf("Valid from: %s \n", cert.NotBefore.Format("2006-January-02"))
fmt.Printf("SerialNumber: %d \n", cert.SerialNumber)
fmt.Printf("Signature Algorithm: %s \n", cert.SignatureAlgorithm.String())
fmt.Printf("Issuer Name: %s\n\n", cert.Issuer)
}
型
请帮助我在nodejs从主机或pem文件中获取所有SSL密钥链对
我需要以下输出
的数据
1条答案
按热度按时间js5cn81o1#
“密钥链对”不是定义的术语,并且没有明确的含义。如果您的意思是 keypair,即公钥 * 和 * 私钥,您无法获得SSL/TLS服务器的私钥或密钥对 * 或 * 在其信任链(又名路径)中使用的各种CA中的任何CA(可能正好是两个,小于两个或多于两个)。
TLSSocket.getPeerCertificate()
返回 server(终端实体或叶)证书,而不是根证书。正如文档中明确指出的那样,我猜你没有读过,因为这需要做一些类似于工作的事情,如果你使用getPeerCertificate(true)
,它会返回一个包含完整链的链表。请参阅我几天前刚刚发布的示例(尽管目的不同)Unable to verify the first certificate in Nodejs while making request and cant install packages using npm。x5u
URL仅用于JOSE/JWK,不用于SSL/TLS,并且nodejs中的X509Certificate
对象仅包含一个证书,该证书将是提供的数据中的第一个;对于rfc 7517中的x5 u数据,第一个证书不能是根证书。