3

我需要制作轻量级 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/ -out E841B2655206FA6A3ADA_nov3ext。佩姆

或者我应该在哪里进行更改以生成 x509 v1 证书,因为它不包含 x509 扩展。能否请您提供一个链接以供参考。

谢谢你的时间。

4

1 回答 1

2

通常(嗯,几乎总是真的!)签名不仅仅涵盖证书上的专有名称;但也包括其他所有内容(序列号、有效期等)。

因此,虽然将证书缩小到一定大小并不难,但它会立即使颁发者的签名无效。

但是-在某些情况下,可以做其他事情-那就是完全分配/忽略证书的签名部分;并且只关注公钥。

使用类似的东西

cat somecert.pem | openssl x509 -pubkey -nout

只获取公钥。所以放弃所有的 X509,本质上不再有 PKI。只是一对原始公钥和私钥。

然后在你的应用程序中犯下相当不可原谅的错误,即发明你自己的加密货币——并让该公钥的所有者用它的私钥签署类似 NONCE 的东西;并验证签名。例如

# the 'server' sends a nonce to the client
openssl rand -base64 128 > send-to-client

然后在客户端上签名

cat 来自服务器的消息 | openssl pkeyutl -inkey privkey.pem -sign | base64 > 发送到服务器

在服务器上我们检查这个

cat msg-from-client | openssl pkeyutl -in pubkey-of-client.pem -verify

并在那里取东西。然而,除非你是一个出色的密码学家和协议设计者,否则像这样的方案(当然也有!)充满了缺陷和陷阱。

但从理论上讲,它确实让您只使用几 1000 字节的 RSA 密钥;或几个 100 字节的基于椭圆曲线的密钥。

于 2013-12-05T20:53:04.133 回答