Después de enviar un correo electrónico firmado S / MIME a una compañía de seguros, su servidor de intercambio recogió mi certificado S / MIME y su respuesta fue encriptada S / MIME. Antes, usaban mi clave pública PGP para cifrar los mensajes que me enviaban, que pude descifrar. Nunca firmaron sus propios mensajes.
A pesar de que el certificado y la clave privada S / MIME están instalados en Thunderbird y Apple Mail, ninguno de ellos puede descifrar el mensaje. ( Thunderbird no puede descifrar el mensaje. El remitente usó uno de sus certificados para cifrar este mensaje. A pesar de eso, Thunderbird no pudo encontrar el certificado y la clave privada correspondiente ) .
Thunderbird y Apple Mail pueden descifrar los mensajes que recibo de otras entidades que usan mi certificado S / MIME para el cifrado, incluidos los mensajes de prueba y los mensajes de swiftmail / PHP.
La clave privada no está en una tarjeta inteligente, sino que se almacena en el módulo de seguridad de software de Thunderbird y en el llavero de Apple.
Estos son algunos de los encabezados de correo del correo electrónico no cifrado que recibí de la compañía de seguros:
Content-Transfer-Encoding: BASE64
Content-Disposition: attachment; filename=smime.p7m
Content-Type: application/pkcs7-mime; name=smime.p7m;
smime-type="enveloped-data"
...
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
...
MIME-Version: 1.0
Descifrado a mano como se sugiere en ¿Cómo descifrar un mensaje S / MIME roto enviado por Outlook? también falla:
$ openssl smime -decrypt -in msg.eml -inkey privatekey.pem -out decrypted.txt
Error decrypting PKCS#7 structure
140735747326920:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.50.2/libressl/crypto/evp/evp_enc.c:529:
¿Cómo encontrar lo que está mal en cuyo extremo?
Editar:
$ openssl smime -pk7out -in msg.eml | openssl asn1parse
0:d=0 hl=4 l=27205 cons: SEQUENCE
4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-envelopedData
15:d=1 hl=4 l=27190 cons: cont [ 0 ]
19:d=2 hl=4 l=27186 cons: SEQUENCE
23:d=3 hl=2 l= 1 prim: INTEGER :00
26:d=3 hl=4 l= 457 cons: SET
30:d=4 hl=4 l= 453 cons: SEQUENCE
34:d=5 hl=2 l= 1 prim: INTEGER :00
37:d=5 hl=3 l= 172 cons: SEQUENCE
40:d=6 hl=3 l= 151 cons: SEQUENCE
43:d=7 hl=2 l= 11 cons: SET
45:d=8 hl=2 l= 9 cons: SEQUENCE
47:d=9 hl=2 l= 3 prim: OBJECT :countryName
52:d=9 hl=2 l= 2 prim: PRINTABLESTRING :GB
56:d=7 hl=2 l= 27 cons: SET
58:d=8 hl=2 l= 25 cons: SEQUENCE
60:d=9 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
65:d=9 hl=2 l= 18 prim: PRINTABLESTRING :Greater Manchester
85:d=7 hl=2 l= 16 cons: SET
87:d=8 hl=2 l= 14 cons: SEQUENCE
89:d=9 hl=2 l= 3 prim: OBJECT :localityName
94:d=9 hl=2 l= 7 prim: PRINTABLESTRING :Salford
103:d=7 hl=2 l= 26 cons: SET
105:d=8 hl=2 l= 24 cons: SEQUENCE
107:d=9 hl=2 l= 3 prim: OBJECT :organizationName
112:d=9 hl=2 l= 17 prim: PRINTABLESTRING :COMODO CA Limited
131:d=7 hl=2 l= 61 cons: SET
133:d=8 hl=2 l= 59 cons: SEQUENCE
135:d=9 hl=2 l= 3 prim: OBJECT :commonName
140:d=9 hl=2 l= 52 prim: PRINTABLESTRING :COMODO RSA Client Authentication and Secure Email CA
194:d=6 hl=2 l= 16 prim: INTEGER :7F9285XXXX...
212:d=5 hl=2 l= 13 cons: SEQUENCE
214:d=6 hl=2 l= 9 prim: OBJECT :rsaesOaep
225:d=6 hl=2 l= 0 cons: SEQUENCE
227:d=5 hl=4 l= 256 prim: OCTET STRING [HEX DUMP]:0068E5XXXX...
487:d=3 hl=4 l=26718 cons: SEQUENCE
491:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data
502:d=4 hl=2 l= 29 cons: SEQUENCE
504:d=5 hl=2 l= 9 prim: OBJECT :aes-256-cbc
515:d=5 hl=2 l= 16 prim: OCTET STRING [HEX DUMP]:CF1A61XXXX...
533:d=4 hl=4 l=26672 prim: cont [ 0 ]
fuente
openssl smime -pk7out -in msg.eml | openssl asn1parse
el correo electrónico para analizarlo y mostrar el algoritmo utilizado sin intentar descifrarlo.openssl smime -decrypt -in msg.eml -recip recipient.pem
pero no tengo idea de si eso podría marcar la diferencia en su caso.LibreSSL 2.2.7
) me dice-recip file recipient certificate file for decryption
. Por lo que entiendo, siempre se necesita una clave privada para el descifrado, que no forma parte del certificado (porque el certificado se puede compartir públicamente). ¿Qué hay exactamente dentro de tirecipient.pem
?des-EDE3-CBC
se usa y hay 2 entradas en el SET que comienzan en el desplazamiento 26, ambas usando lo mismocommonName
. Aún no estoy seguro de cómo usaropenssl aes-128-cbc
/ cómo especificar el resumen del mensaje. Usar-md
conopenssl smime
no cambió nada.recipient.pem
supuesto, debe contener la clave privada para descifrar el correo electrónico.