gpt4 book ai didi

go - 如何解析 PEM 证书的集合

转载 作者:行者123 更新时间:2023-12-01 21:09:35 30 4
gpt4 key购买 nike

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

-----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-----
我要绑定(bind)的代码是:
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)
}
我尝试了两种方法:
  • 我试过 decode它到 PEM block ,但它只读取其中一个证书并丢弃其余证书。
  • 我试图创建一个 CertPool在字符串之外,但它也会加载其中一个证书。

  • 理想情况下,我不想执行一堆容易中断的字符串解析。
    任何其他方式将不胜感激。

    最佳答案

    I tried to decode it to a PEM block, but it only reads one of the certs and drops the rest.


    诀窍是处理其余的 PEM block 。它在 pem.Decode 中返回秒结果。这是如何完成的:
        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")
    }
    }

    关于go - 如何解析 PEM 证书的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62965006/

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