【问题标题】:SSL Certificate to JSONSSL 证书转 JSON
【发布时间】:2013-01-28 10:51:19
【问题描述】:

我需要通过 JSON 将 SSL 证书作为字符串发送到我的服务器。在服务器上,我需要将 JSON 字符串重建为有效证书。我的问题是证书中的空格和刹车线。

如何保留正确格式的证书?

【问题讨论】:

    标签: json unix escaping ssl-certificate


    【解决方案1】:

    问题确实与空格和线路刹车有关。

    这对我有用:

    1. 将证书复制到单行文本字段中。不是很优雅,但它是一种快速制作单行字符串的方法。我猜大多数文本编辑器也可以做到这一点。

    2. 用“\n”替换了线刹车(现在是空格)。不要替换这些短语 -----BEGIN RSA PRIVATE KEY----- 之间的空格,它们可以保持原样。

    例子:

    {
    "key": "-----BEGIN RSA PRIVATE KEY-----\njlQvt9WdR9Vpg3WQT5+C3HU17bUOwvhp/r0+viMcBUCRW85UqI2BJJKTi1IwQQ4c\ntyTrhYJYOP+A6JXt5BzDzZy/B7tjEMDBosPiwH2m4MaP+6wTbi1qR1pFDL3fXYDr\n"
    }
    

    【讨论】:

      【解决方案2】:

      另一种方法是在客户端对证书进行 base64 编码并在服务器上对其进行解码。这避免了添加换行符但保留格式的所有麻烦, 类似于 Kubernetes 的秘密

      【讨论】:

        【解决方案3】:

        我会提供更细致的解释。 json 序列化字符串转义换行符和其他一些字符。但是 json 字符串可以毫无问题地保存 PEM 编码的证书。这里出现的唯一麻烦是必须做一些工作来手动构建 json。我不会推荐这种方法。可以使用常用工具轻松支持此用例。例如,下面展示了证书的检索、嵌入到 json、解析 json、提取证书并最终通过 openssl 解析:

        openssl s_client -showcerts -connect google.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM | python3 -c "
        import sys
        import json
        body = {}
        body['cert'] = sys.stdin.read()
        json.dump(body, sys.stdout)
        " | python3 -c "
        import sys
        import json
        body = json.load(sys.stdin)
        print(body['cert'])
        " | openssl x509 -text; echo $?
        Certificate:
            Data:
                Version: 3 (0x2)
                Serial Number:
                    fa:bc:89:f7:bf:33:10:94:0a:00:00:00:01:25:fd:32
                Signature Algorithm: sha256WithRSAEncryption
        ...
        0
        

        【讨论】:

          猜你喜欢
          • 2015-08-28
          • 1970-01-01
          • 2018-08-23
          • 2017-06-13
          • 2019-03-29
          • 2014-01-05
          • 2013-01-25
          • 2012-04-13
          相关资源
          最近更新 更多