You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenSSL为X509证书生成持有证明?

用OpenSSL生成X.509证书验证代码的签名(持有证明)

我刚好对Azure IoT Hub的X.509证书持有证明流程很熟悉,这就给你一步步拆解用OpenSSL完成签名的操作:

前提准备

你需要:

  • 与验证代码关联的X.509证书对应的私钥(PEM格式最佳,比如device-private-key.pem)
  • 你的验证代码:7A69A4702DA903A41C3A5BC5575A8E3F49BEC5E5BA2D4CE1

步骤1:把十六进制验证代码转成二进制文件

OpenSSL签名是对原始二进制数据操作的,所以得先把十六进制字符串转成二进制:

# Unix/Linux/Git Bash环境
echo -n "7A69A4702DA903A41C3A5BC5575A8E3F49BEC5E5BA2D4CE1" | xxd -r -p > verification-code.bin

echo -n是为了避免额外的换行符干扰,xxd -r -p负责把十六进制转成原始二进制,输出到verification-code.bin文件。

如果是Windows PowerShell环境,用这个命令:

$hexCode = "7A69A4702DA903A41C3A5BC5575A8E3F49BEC5E5BA2D4CE1"
$bytes = [byte[]]::new($hexCode.Length/2)
for($i=0; $i -lt $hexCode.Length; $i+=2){
    $bytes[$i/2] = [convert]::ToByte($hexCode.Substring($i,2), 16)
}
[IO.File]::WriteAllBytes("verification-code.bin", $bytes)

步骤2:用私钥对二进制验证代码签名

Azure IoT Hub要求用SHA256哈希算法+PKCS#1 v1.5签名格式,执行以下OpenSSL命令:

openssl dgst -sha256 -sign device-private-key.pem -out verification-signature.bin verification-code.bin

参数解释:

  • -sha256:指定哈希算法为SHA256,符合Azure的要求
  • -sign device-private-key.pem:指定用来签名的私钥文件
  • -out verification-signature.bin:将签名后的二进制数据输出到这个文件
  • verification-code.bin:待签名的二进制验证代码文件

如果你的私钥设置了密码,需要加上-passin参数传入密码,比如:

openssl dgst -sha256 -sign device-private-key.pem -passin pass:your-key-password -out verification-signature.bin verification-code.bin

步骤3:将签名转为Base64格式(提交Azure时需要)

Azure IoT Hub通常要求提交Base64编码的签名字符串,所以把二进制签名转成Base64:

# Unix/Linux/Git Bash
base64 verification-signature.bin > verification-signature.b64

Windows PowerShell版本:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("verification-signature.bin")) | Out-File -Encoding ASCII verification-signature.b64

可选:验证签名的有效性

如果你想确认签名是否正确,可以用对应的X.509证书公钥来验证:

openssl dgst -sha256 -verify <(openssl x509 -in device-cert.pem -pubkey -noout) -signature verification-signature.bin verification-code.bin

如果输出Verified OK,说明签名完全有效。


内容的提问来源于stack exchange,提问作者Dalton Cézane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:44:12