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

树莓派OpenSSL证书验证失败求助:同文件电脑验证正常

解决树莓派验证CA签发证书失败的问题

嘿,我看了你遇到的情况:用PC做CA给树莓派签了证书,结果树莓派上用openssl verify验证时一直报error 18 at 0 depth lookup: self signed certificate,但相同的文件在电脑上却能正常验证。这个坑我之前折腾CA的时候也踩过,问题大概率出在你给树莓派签名证书的方式上。

问题根源:你的客户端证书其实是“自签名”的

看你贴出来的证书签名命令:

openssl x509 -req -days 365 -in pi.csr -signkey privkey.pem -sha256 -out pi.crt

这里用-signkey参数的话,OpenSSL是直接用指定的私钥给CSR签名,但生成的证书签发者(Issuer)和主体(Subject)是完全一样的——说白了,这个证书根本不是由你的CA签发的,而是“自签名”的!这就解释了为什么树莓派会报那个错误。

至于电脑上的验证结果,你写的输出有点混乱(最后带了个OK),可能是电脑上的OpenSSL版本对这种畸形证书的容错性更高,或者输出格式不同,但本质上这个证书的信任链是不完整的。

正确的CA签名客户端证书步骤

你得用CA的证书+私钥来签名树莓派的CSR,而不是直接用-signkey。按下面的步骤重新生成证书:

  1. 先给CA生成一个序列号文件(第一次签名必须要,后续签名会自动递增):
echo 01 > ca.srl
  1. 用CA的证书和私钥签名树莓派的CSR:
openssl x509 -req -days 365 -in pi.csr -CA ca.pem -CAkey privkey.pem -CAserial ca.srl -sha256 -out pi.crt

这样生成的pi.crt里,签发者会是你的CA证书的信息,主体是树莓派CSR里填的内容,形成了完整的信任链。

  1. 转成PEM格式(如果需要的话):
openssl x509 -in pi.crt -out pi.pem -outform PEM

验证修复效果

现在把新生成的pi.pem传到树莓派上,重新执行验证命令:

openssl verify -verbose -CAfile ca.pem pi.pem

这次应该会输出pi.pem: OK,不会再报自签名的错误了。

额外排查点(如果还是不行的话)

  • 检查证书完整性:在树莓派上用openssl x509 -in ca.pem -text -noout查看CA证书内容,和电脑上的输出对比,确保文件没传坏或者截断。
  • 核对OpenSSL版本:树莓派Stretch的OpenSSL是1.1.0系列,电脑上如果是更新的版本,虽然基础命令兼容,但可以确认参数没写错。
  • 查看验证链细节:用openssl verify -show_chain -CAfile ca.pem pi.pem看完整的验证过程,确认是否能正确找到CA作为信任锚。

内容的提问来源于stack exchange,提问作者Joe N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:39:50