SSL 证书到 JSON

问题描述 投票:0回答:3

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

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

json unix escaping ssl-certificate
3个回答
16
投票

问题确实与空格和换行有关。

这对我有用:

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

  2. 用“替换换行符(现在是空格) "。不要替换这些短语之间的空格

    -----BEGIN RSA PRIVATE KEY-----
    它们可以保持原样。

示例:

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

7
投票

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


0
投票

我会提供更细致的解释。 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
© www.soinside.com 2019 - 2024. All rights reserved.