首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go:加载证书,使其成为*x509证书(能够签署其他证书)

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

Stack Overflow用户
提问于 2014-10-20 08:02:25
回答 1查看 5.2K关注 0票数 2

我已经问过了,但是没有回应

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

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

我有一个用x509包生成的证书,一个由另一个CA证书签名的CA证书,该证书也是用x509包生成的。一网打尽。

使用x509打开文件创建der。x509.CreateCertificate()使用pem.Encode()封送pem

CA证书是有效的,也可以在各种浏览器中顺利导入

openssl -text也报告可解析。

我尝试了tls.LoadX509KeyPair(),

代码语言:javascript
复制
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证书类型的其他证书?

很明显我漏掉了什么,但到底是什么呢?

EN

回答 1

Stack Overflow用户

发布于 2014-10-20 11:03:45

答案是:问题中的解决方法是正确的。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26456775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档