努布问题:
给定用cfssl创建的x509证书:
server.pem
server-key.pem
由
ca.pem
server.pem的用法如下:
"server": {
...
"usages": [ "signing", "key encipherment", "server auth", "data encipherment", "s/mime" ]
...
},
我能够用openssl验证证书:
openssl verify -CAfile ca.pem server.pem
server.pem: OK
我能够签署一个纯文本文件:
openssl dgst -sha256 -sign server-key.pem -out signable.txt.sha256 signable.txt
并验证签名
openssl x509 -pubkey -noout -in server.pem | tee server-pubkey.pem
openssl dgst -sha256 -verify server-pubkey.pem -signature signable.txt.sha256 signable.txt
Verified OK
但现在我无法了解如何使用证书进行加密/解密:
尝试1
openssl smime -encrypt -aes-256-cbc -in secret.txt -out secret.txt.enc -outform DER server-key.pem
Could not read recipient certificate file from server-key.pem
4027E4F7E97F0000:error:1608010C:STORE routines:ossl_store_handle_load_result:unsupported:../crypto/store/store_result.c:151:
Unable to load recipient certificate file
尝试2
openssl smime -encrypt -aes-256-cbc -in secret.txt -out secret.txt.enc -outform DER server.pem
Error creating PKCS#7 structure
40F7A87F027F0000:error:10800096:PKCS7 routines:PKCS7_RECIP_INFO_set:encryption not supported for this key type:../crypto/pkcs7/pk7_lib.c:637:
40F7A87F027F0000:error:10800078:PKCS7 routines:PKCS7_encrypt_ex:error adding recipient:../crypto/pkcs7/pk7_smime.c:467:
尝试3
cat server.pem server-key.pem > server.pkcs12
openssl smime -encrypt -aes-256-cbc -in secret.txt -out secret.txt.enc -outform DER server.pkcs12
Error creating PKCS#7 structure
40C7B2B9947F0000:error:10800096:PKCS7 routines:PKCS7_RECIP_INFO_set:encryption not supported for this key type:../crypto/pkcs7/pk7_lib.c:637:
40C7B2B9947F0000:error:10800078:PKCS7 routines:PKCS7_encrypt_ex:error adding recipient:../crypto/pkcs7/pk7_smime.c:467:
有线索吗?
发布于 2022-07-22 08:28:37
openssl x509 -in server.pem -text -noout
并查看Public Key Algorithm
行。如果它说dsaEncryption
(可怕的名字BTW)或rsassaPss
,你不能用这个证书(和密钥)加密;这些算法不支持加密。*如果它说id-ecPublicKey
smime
命令(正如您在错误消息中看到的那样,实际上是PKCS7)不能使用它加密,但是cms
命令可以--这是PKCS7和CMS之间为数不多的区别之一(添加了KeyAgreeRecipInfo选择符KARI)。* DSA是在本世纪初专门设计的,目的是防止加密技术的使用,而不考虑当时的法律禁止从美国输出加密技术。也不考虑施诺尔的专利主张,但这是一个更复杂的故事。虽然RSA (和普通RSA密钥)一般都可以用于签名和加密,但PSS (概率签名方案)变体仅用于签名。有一个类似的变体OAEP (最优非对称加密填充)用于加密,但它不像PSS那样在证书中使用不同的算法标识符。
要在PKCS7 7/CMS/SMIME中进行加密,
https://stackoverflow.com/questions/73075991
复制相似问题