Openssl制作证书

其实制作证书还是很简单,就是三个命令。

openssl genpkey -algorithm RSA -out private.key
openssl req -new -key private.key -out certificate.csr
openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out certificate.crt

之后就会生成名字是certificate.crt的证书。

这个证书怎么使用呢?其实有很多,现在说的一个就是文件签名:

首先创建文件。

echo "This is a test message" > data.txt

然后根据之前的私钥,从这个文件生成验证证书。之后将证书发给对方。

openssl dgst -sha256 -sign private.key -out data.sig data.txt

之后根据私钥生成生成公钥并发给对方。

对方此时就拿到了文件,验证证书,还有你的公钥。

用这个命令就可以验证:

openssl dgst -sha256 -verify public.key -signature data.sig data.txt

如果没有篡改,就是OK。反之则失败。

写这个还是因为之前Android的Secure Boot,两者本质上一样。但是实际命令可能会复杂一些。

在出厂之前,生产方会用私钥对bootloader,分区这些做签名。然后公钥是写死在flash中某个熔断的位置。调用之前会对这些分区进行校验,就像上面的Verify OK之后才下一步。就保证了这些内容不会被篡改。

有一个小疑问,假如签名,目标文件都改了,那么可以校验通过吗?GPT答复是不会,因为做签名要私钥,如果这个私钥和公钥不匹配,也是不会通过的。所以在设备上,包整公钥不能被更改就欧了。

最后附一个RSA证书校验流程的图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值