ssl - 如何在树莓派上验证 openssl 证书?

标签 ssl openssl raspberry-pi ssl-certificate digital-signature

我正在使用树莓派创建一个测试网络。我的电脑将是 CA,我的 pi 零 W 是客户端。我在我的电脑上创建了一个自签名的 CA 证书,在 pi 上创建了证书请求,并在我的电脑上用 CA key 签署了请求。

当我在 pi 上验证证书时,出现错误。同样的命令,同样的文件,我的电脑上没有报错

树莓派上的错误:

$ openssl verify -verbose -CAfile ca.pem pi.pem
error 18 at 0 depth lookup: self signed certificate
error cert.pem: verification failed
# ca.pem is the ca self-signed cert. pi.pem is the cert signed by ca private key

在我的电脑上使用相同的文件:

$ openssl verify -verbose -CAfile ca.pem pi.pem
error cert.pem: verification failed
error 18 at 0 depth lookup: self signed certificate
OK
# ca.pem is the ca self-signed cert. pi.pem is the cert signed by ca private key

到目前为止我尝试了什么

  1. 在 pi 上重新安装 openssl
  2. 将pi上的openssl.cnf文件替换成我电脑上的
  3. 更改树莓派上的时间
  4. 角色互换:pi 作为 CA,计算机作为客户端。这导致验证在计算机上工作而不是 pi(和以前一样)
  5. raspbian 版本是 stretch 而不是 sun
  6. 尝试了自签名证书验证。验证在计算机和 pi 上的工作。

创建证书的过程:

# Server: https://support.symantec.com/en_US/article.TECH242030.html
openssl req -new -sha256 -out cert.csr
openssl x509 -req -days 365 -in cert.csr -signkey privkey.pem -sha256 -out cert.crt
openssl x509 -in cert.crt -out ca.pem -outform PEM

# Client:
openssl req -new -sha256 -out pi.csr
openssl x509 -req -days 365 -in pi.csr -signkey privkey.pem -sha256 -out pi.crt # <--- privkey.pem is the privkey of CA
openssl x509 -in pi.crt -out pi.pem -outform PEM

最佳答案

您的 CA 证书需要某种配置文件,否则它将使用 basicConstraints=CA:FALSE,这意味着它会创建一个自签名叶证书而不是 CA 证书。换句话说,您的证书是受信任的但不能用于签署其他证书

参见例如这里是如何创建一个链。

https://gist.github.com/Soarez/9688998

请注意,您还需要使用例如-CA-CAkey 所以请不要使用您自己的命令,只是一个配置文件。

关于ssl - 如何在树莓派上验证 openssl 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50420678/

相关文章:

php - curl 和 pcntl_fork()

php_curl 无法运行 https (Google+ API)

php - PHP 中的模拟 [echo "symbol=LTC%2FBTC&side=BUY"| openssl dgst -sha256 -hmac "SECRETKEY"]

python - Golang 和 SPI - 尝试初始化 RF522 驱动器

node.js - 使 *.crt *.pem 证书在 Docker 容器上运行的 Azure 应用服务内可用

ssl - IdentityServer3 的证书要求?

c - LibCrypt BN_div 上的 `ctx` 参数有什么用?

android - Android 上的本地 HTTPS 服务器 - 使用 dh 文件

java - 通过Android App从本地Wifi接收数据并使用3G实时传输到远程服务器

opengl-es-2.0 - 树莓派上的着色器中没有统一名称