我需要制作轻量级PKC,因为我想从用户证书中删除x509 v3扩展名。我可以使用这个openssl命令删除v3扩展吗?
openssl x509 -in /usr/local/openca/var/openca/crypto/certs/E841B2655206FA6A3ADA.pem -noout -text -certopt no_extensions -out / usr / local / openca / var / openca / crypto / certs / - 出 E841B2655206FA6A3ADA_nov3ext.pem
或者我应该在哪里进行更改以生成x509 v1证书,因为它不包含x509扩展名。你能不能给我一个参考链接。
谢谢你的时间。答案 0 :(得分:1)
通常(好吧,实际上总是真的!)签名不仅涵盖证书上的专有名称;但其他一切(连续,有效期等)。
因此,尽管将证书缩减到规模并不困难,但它会立即使签发者的签名无效。
但是 - 在某些情况下,可以做其他事情 - 这就是完全分配/忽略证书的签名部分;并专注于公钥。
使用像
这样的东西cat somecert.pem | openssl x509 -pubkey -nout
获取公钥。因此放弃所有X509并且在本质上不再拥有PKI。只需成对的原始公钥和私钥。
然后在你的应用程序中提交发明你自己的加密的相当不可原谅的失误 - 让公钥的所有者用私钥签署类似NONCE的东西;并验证签名。 E.g。
# the 'server' sends a nonce to the client
openssl rand -base64 128 > send-to-client
然后在客户端上签名
cat msg-from-server | openssl pkeyutl -inkey privkey.pem -sign | base64>发送到服务器
并在服务器上检查此
cat msg-from-client | openssl pkeyutl -in pubkey-of-client.pem -verify
并在那里采取行动。然而,除非你是一个笨蛋密码学家和协议设计师,否则这样的计划(以及上面的确如此!)都充满了缺陷和陷阱。
但理论上它确实让你只使用几个1000字节的RSA密钥;或几个100字节的基于椭圆曲线的键。