gpt4 book ai didi

go - 在 Go 中解析 X509 证书

转载 作者:IT王子 更新时间:2023-10-29 02:21:34 27 4
gpt4 key购买 nike

我有以下功能,它读取 X509 证书。

certCerFile,err := os.Open("certificate.pem")
if err != nil {
log.Fatal(err)
}

derBytes := make([]byte,1000)

count,err:=certCerFile.Read(derBytes)
if err != nil {
log.Fatal(err)
}

certCerFile.Close()

// trim the bytes to actual length in call
cert,err := x509.ParseCertificate(derBytes[0:count])
if err != nil {
log.Fatal(err)
}

fmt.Printf("Name %s\n", cert.Subject.CommonName)
fmt.Printf("Not before %s\n", cert.NotBefore.String())
fmt.Printf("Not after %s\n", cert.NotAfter.String())

我遇到以下错误:

asn1: structure error: tags don't match (16 vs {class:0 tag:13 length:45 isCompound:true}) {optional:false explicit:false application:false defaultValue: tag: stringType:0 timeType:0 set:false omitEmpty:false} certificate @2

这就是我生成 X509 的方式:

random := rand.Reader

var key rsa.PrivateKey
loadKey("private.key",&key)

now:= time.Now()
then := now.Add(60 * 60 * 24 * 365 * 1000 * 1000 * 1000)

template:= x509.Certificate{
SerialNumber: big.NewInt(1),
Subject: pkix.Name{
CommonName: "borscht.com",
Organization: []string{"Borscht Systems AG"},
},
NotBefore:now,
NotAfter:then,
SubjectKeyId: []byte{1,2,3,4},
KeyUsage: x509.KeyUsageCertSign | x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
BasicConstraintsValid:true,
IsCA:true,
DNSNames:[]string{"borscht.com","localhost"},
}

derBytes,err:=x509.CreateCertificate(random, &template, &template,&key.PublicKey,&key)
if err != nil {
log.Fatal(err)
}

certCerFile,err :=os.Create("certificate.cer")
if err != nil {
log.Fatal(err)
}

certCerFile.Write(derBytes)
certCerFile.Close()

certPemFile, err := os.Create("certificate.pem")
if err != nil {
log.Fatal(err)
}

我只是不明白哪里出了问题。

最佳答案

我自己犯了一个错误。解析 pem 而不是 cer 文件。已更换,一切正常

关于go - 在 Go 中解析 X509 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744194/

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