数字证书的处理流程

2025.02.24 · 3 minute read

例子

为了证明我的身份,让别人可以安全的和我通信,以及防止别人冒充我的身份,我可以申请身份证明:

  1. 创建自己的秘密(私钥)和公开信息(公钥)
  2. 使用自己的信息,填写申请表
  3. 将申请表提交给第三方,第三方盖章,证明我是我
  4. 最后我将证明和秘密放在一起,保存好

使用身份证明的方法是:

  1. 我使用秘密生成一个签名
  2. 对方使用公开信息验证签名
  3. 第三方使用签名验证我的身份

流程

申请数字证书的标准流程如下:

  1. 密钥对生成
  • 创建私钥 (需严格保密)
  • 生成对应的公钥
  1. 证书申请
  • 准备申请者信息
  • 填写证书申请表 (CSR)
  1. CA 认证
  • 提交至认证机构 (CA)
  • CA 验证并签发证书
  1. 证书安装
  • 合并私钥与证书
  • 安全保存完整证书

流程细节

使用技术的语言来讲,申请方首先应该创建 P12,它是 PKCS#12 的简称,全称是 Public Key Cryptography Standards,里面包含了:

  • 私钥
  • 证书(如果之后有)
  • 证书链(如果之后有)
keytool -genkeypair \
    -keysize 4096 \
    -keystore keystore_file.p12 \
    -storetype PKCS12 \
    -alias keystore_file \
    -dname "CN=keystore_file,OU=dataproxy-services" \
    -keyalg RSA \
    -storepass abc

生成的 p12 文件本身就是一种 keystore,可以直接被用作 csr,即 Certificate Signing Request:

keytool -certreq \
    -keystore keystore_file.p12 \
    -alias keystore_file \
    -file certificate.csr \
    -storepass abc

其中包括了从私钥中提取出来的公钥,申请着的信息,以及使用私钥对上述信息的签名。这个文件将会在之后发送给 CA 机构进行签发。

第三方的 CA 签发机构会验证信息,并使用自己的私钥签名 CSR 并且生成证书(链),发送回给申请者。

申请者要将原始的,包含私钥的 p12 合并,完成证书的安装:

keytool -importcert \
    -keystore keystore_file.p12 \
    -file certificate.p7b \
    -alias keystore_file \
    -trustcacerts \
    -noprompt \
    -storepass abca

如何使用

我希望将 p12 和 vault 结合起来使用。

因为 p12 是二进制文件,不适合存储和传输,因此为了存储和使用,首先需要将 p12 转化为 base64:

base64 -i keystore_file.p12 -o p12.base64

Vault 包含加密存储的功能,而 kv 适合存储证书类型的数据。我们将改文件存储到 Vault 中:

vault kv put custom/internal/certificates/kafkaKeyStore [email protected]

最后就是使用:

jks:
  secretList:
    - name: kafkaStore
      vaultPath: "custom/internal/certificates/kafkaKeyStore"

应用启动的时候,就可以直接获得证书了。

感谢您的阅读!您的支持是我的动力。

如果您喜欢这篇文章,不妨请我喝杯咖啡。 ☕️