gpt4 book ai didi

go - 使用 golang 提取主题 key 标识符

转载 作者:IT王子 更新时间:2023-10-29 02:11:19 26 4
gpt4 key购买 nike

我正在尝试使用 golang crypto/tls 库为服务器返回的链中的所有证书提取 SubjectKeyIdentifiers。

package main

import (
"crypto/tls"
"fmt"
)

func main() {
conn, err := tls.Dial("tcp", "mail.google.com:443", &tls.Config{
InsecureSkipVerify: true,
})
if err != nil {
panic("failed to connect: " + err.Error())
}
state := conn.ConnectionState()
if err != nil {
panic("failed to get ConnState: " + err.Error())
}
for _, cert := range state.PeerCertificates {
fmt.Printf("%s\n", cert.Subject.CommonName)
fmt.Printf("%X\n", cert.SubjectKeyId)
}
conn.Close()
}

根据文档,SubjectKeyId 应该已经填充了 ASN1 解析数据。问题是我得到4E16C14EFCD46B0A09F8090F1C00278C6F992C65

真正的是

30:A1:48:01:DB:2B:C3:EE:D3:84:54:4B:66:AF:0C:4C:66:F7:69:47

我在这里做错了什么?

最佳答案

问题是我在检查 openssl 时没有指定 SNI。结论是:始终在 ClientHello 中设置 SNI

$ echo q |openssl s_client -showcerts -connect mail.google.com:443 -servername mail.google.com -showcerts 2>/dev/null | sed -n '/-----BEGIN/,/-----END/p' | openssl x509 -text -noout | grep -P -A1 'Subject Key'
X509v3 Subject Key Identifier:
4E:16:C1:4E:FC:D4:6B:0A:09:F8:09:0F:1C:00:27:8C:6F:99:2C:65
$ echo q |openssl s_client -showcerts -connect mail.google.com:443 -showcerts 2>/dev/null | sed -n '/-----BEGIN/,/-----END/p' | openssl x509 -text -noout | grep -P -A1 'Subject Key'
X509v3 Subject Key Identifier:
30:A1:48:01:DB:2B:C3:EE:D3:84:54:4B:66:AF:0C:4C:66:F7:69:47
$

关于go - 使用 golang 提取主题 key 标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46182134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com