首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析PEM证书的集合

如何解析PEM证书的集合
EN

Stack Overflow用户
提问于 2020-07-18 05:28:46
回答 1查看 863关注 0票数 2

我有一个字符串中的pem证书集合,要绑定到TLS端点,如何有效地将它们转换为CRT文件(i.e.public.crt)和密钥文件(即private.key),以便将其绑定到端点:

输入字符串:

代码语言:javascript
复制
-----BEGIN PRIVATE KEY-----
MIIE3oydueOANJHhvL3yvJdTphoev5GO7go+ByYOO/l54u5O2PxMeX+AjAb6Axmq
livIuhw=
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIE3oydueOANJHhvL3yvJdTphoev5GO7go+ByYOO/l54u5O2PxMeX+AjAb6Axmq
livIuhw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE3oydueOANJHhvL3yvJdTphoev5GO7go+ByYOO/l54u5O2PxMeX+AjAb6Axmq
asdsa312asdsadasdsad=
-----END CERTIFICATE-----

我要绑定的代码是:

代码语言:javascript
复制
https_r := mux.NewRouter()
err_https := http.ListenAndServeTLS(serviceEndpoint, "/etc/pki/tls/certs/public.crt", "/etc/pki/tls/certs/private.key", https_r)
    if err_https != nil {
        log.Fatal("Web server (HTTPS): ", err_https)
    }

我尝试过两种方法:

  1. 我试着将其解码到一个PEM块,但它只读取其中一个证书,然后删除其余的证书。
  2. 我试图从字符串中创建一个CertPool,但它也加载了一个证书。

理想情况下,我不想执行一串字符串解析,这些字符串解析很容易中断。

任何其他方式都会受到高度赞赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-22 14:22:02

我试着把它解码到一个PEM块,但是它只读取其中一个证书,然后删除其余的证书。

诀窍是处理其余的PEM块。它以pem.Decode秒结果为单位返回。以下是如何做到这一点:

代码语言:javascript
复制
    for block, rest := pem.Decode(data); block != nil; block, rest = pem.Decode(rest) {
        switch block.Type {
        case "CERTIFICATE":
            cert, err := x509.ParseCertificate(block.Bytes)
            if err != nil {
                panic(err)
            }

            // Handle certificate
            fmt.Printf("%T %#v\n", cert, cert)

        case "PRIVATE KEY":
            key, err := x509.ParsePKCS1PrivateKey(block.Bytes)
            if err != nil {
                panic(err)
            }

            // Handle private key
            fmt.Printf("%T %#v\n", key, key)

        default:
            panic("unknown block type")
        }
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62965006

复制
相关文章

相似问题

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