Go:加载证书,使其成为 *x509.Certificate(能够签署其他证书)

标签 go x509

我已经在 golang-nuts 中询问但没有回应

https://groups.google.com/forum/#!topic/golang-nuts/EhlpMiMAPSM

我认为复制邮件正文没有多大意义,因为我不相信 Google 群组或链接会改变,第一封电子邮件的正文就足够了。

我有一个用 x509 包生成的证书,一个由另一个同样用 x509 包生成的 CA 证书签名的 CA 证书。 一口气搞定。

打开文件 使用 x509.CreateCertificate() 创建 der 用 pem.Encode() 编码 pem

CA 证书是有效的,也可以毫无怨言地导入各种浏览器

openssl -text 也报告可解析

我试过 tls.LoadX509KeyPair() 和

func LoadX509KeyPair(certFile, keyFile string) (*x509.Certificate, *rsa.PrivateKey) {
    cf, e := ioutil.ReadFile(certFile)
    if e != nil {
        fmt.Println("cfload:", e.Error())
        os.Exit(1)
    }

    kf, e := ioutil.ReadFile(keyFile)
    if e != nil {
        fmt.Println("kfload:", e.Error())
        os.Exit(1)
    }
    cpb, cr := pem.Decode(cf)
    fmt.Println(string(cr))
    kpb, kr := pem.Decode(kf)
    fmt.Println(string(kr))
    crt, e := x509.ParseCertificate(cpb.Bytes)

    if e != nil {
        fmt.Println("parsex509:", e.Error())
        os.Exit(1)
    }
    key, e := x509.ParsePKCS1PrivateKey(kpb.Bytes)
    if e != nil {
        fmt.Println("parsekey:", e.Error())
        os.Exit(1)
    }
    return crt, key
}

但是,

parsex509: asn1: 语法错误:数据被截断 退出状态1

如何加载证书以便我可以使用它来签署其他证书作为 *x509.Certificate 类型?

我可能缺少一些明显的东西,但它是什么?

最佳答案

答案是:题目中的做法是正确的。

问题或错误仍然存​​在于证书创建中,因此在“如何加载证书”问题的范围内回答了这个问题。

关于Go:加载证书,使其成为 *x509.Certificate(能够签署其他证书),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26456775/

相关文章:

Go:将 argv 传递给 C 函数

go - 运行时没有任何反应 go get github.com/astaxie/beego

c# - 在本地商店找不到证书

go - panic : runtime error: invalid memory address or nil pointer dereference when running Blockchainr

go - 没有 Docker 的 Traefik v2 反向代理

sockets - 通过 udp 套接字发送 float32 值

c# - 无法导入 X509 v3 证书

java - 使用 HttpClient 4.0.1 使用 x509 证书进行相互身份验证

iphone - 在 iOS 中使用 openssl 从 SSL 证书中提取颁发者 (CN)

wcf - 简单 WCF SSL Web 服务