
Ich brauche Ihre Unterstützung. Ich wollte eine PKCS-Verschlüsselung mit meinem Zertifikat und einem Zertifikat eines Drittanbieters durchführen.
Ich habe die folgenden Komponenten und wollte eine pkcs7-verschlüsselte Ausgabedatei haben.
Quelldatei: PayFile_143_2300000004_20170508_161457.txt Mein Zertifikat für die Anmeldung:
mycertificate.cer und sein privater Schlüssel ist keyfile.key Bankzertifikat eines Drittanbieters (öffentlich): public_2017-2018_base64enc.cer
Wenn ich also den folgenden Befehl verwende
openssl smime -sign -signer mycertificate.cer -inkey keyfile.key -in PayFile_143_2300000004_20170508_161457.txt | openssl smime -encrypt -out PayFile_143_2300000004_20170508_161457.txt.smime public_2017-2018_base64enc.cer mycertificate.cer
Bekomme ich die korrekte PKCS7-verschlüsselte Ausgabedatei? Bitte lassen Sie es mich wissen.
Aber wenn die Bank es an ihrem Ende entschlüsselt, stehen sie vor dem Problem mit dem Header
Nachfolgend finden Sie die von der Bank bereitgestellten Entschlüsselungsprotokolle
starting ReceiveMsg...
logging in...
login successful
getting decryption key and verification certificate...
decryption key and verification certificate extracted
creating mime session
session created
opening mime envelope
message Content-Type [application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"]
message Content-Description [null]
message Content-Disposition [attachment]
message Content-Transfer-Encoding [base64]
getting mime message content
content handler [oracle.security.crypto.smime.SmimeEnveloped]
---------------------------------------
processing encrypted content
content decrypted
decrypted Content-Type [multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha1"; boundary="----DA713A069014AEA715F4E38046E2CA0F"]
content handler [oracle.security.crypto.smime.SmimeMultipartSigned]
-Multipart 1-
Multipart Content-Type [multipart/signed; protocol="application/pkcs7-signature";
boundary="SMS:gW4H/s2Z6GzgMG1DTTNnUi3TmH8="]
Multipart contains [2] body parts
Part 0 Content-Type [text/plain]
Part 0 Content-Description [null]
Part 0 Content-Disposition [null]
Part 0 Content-Transfer-Encoding [null]
Part 0 Content-ID [null]
Part 0 Content-Language [null]
Part 0 Content-MD5 [null]
Part 0 File-Name [null]
Part 0 Header name [], value [20:61]
Part 0 Header name [], value [23B:CRED]
Part 0 Header name [], value [32A:170508RUB100,00]
Part 0 Header name [], value [50K:/40702810200101102376]
Part 0 Header name [???7743170710.???774301001], value [???7743170710.???774301001]
Part 0 Header name [], value [57D://RU044525460.40702840401735933455]
Part 0 Header name [??? ?????????], value [??? ?????????]
Part 0 Header name [115054, ?????????? ???????, ??? 2, ?????], value [115054, ?????????? ???????, ??? 2, ?????]
Part 0 Header name [??????,,RU,], value [??????,,RU,]
Part 0 Header name [], value [59:/40702840401735933455]
Part 0 Header name [???7704662571.???770901001], value [???7704662571.???770901001]
Part 0 Header name [??? "????? ?????? ????? ???????"], value [??? "????? ?????? ????? ???????"]
Part 0 Header name [,??.???????? ???,9], value [,??.???????? ???,9]
Part 0 Header name [??????,,RU,105064], value [??????,,RU,105064]
Part 0 Header name [], value [70:??????????, ???????? ???? ????????? ? ????????????]
Part 0 Header name [], value [71A:SHA]
Part 0 Header name [], value [72:/RPP/61.170508.3.ELEK.170508]
content handler [java.lang.String]
-Multipart 1-
Content-Type=Cp1251
charset=null
writing text mime data to file
data length=0
data =
done...
Können Sie das bitte überprüfen und mir mitteilen, wo das Problem liegt?
Ich weiß deine Hilfe zu schätzen!! Danke, Nikhil
Antwort1
Es sieht so aus, als ob die Bank entschlüsselt, aber den SMIME, der die signierte Datei darstellt, nicht analysieren kann. Wird dies per E-Mail gesendet? Haben Sie versucht, das Format der signierten Datei mit „-outform PEM“ zu ändern?
openssl smime -sign -signer mycertificate.cer -inkey keyfile.key -in PayFile_143_2300000004_20170508_161457.txt -outform PEM | openssl smime -encrypt -out PayFile_143_2300000004_20170508_161457.txt.smime public_2017-2018_base64enc.cer mycertificate.cer
Hier ist ein kurzes Skript, das signierte und verschlüsselte Nachrichten sendet. Ersetzen Sie die Umgebungsvariablen durch die Werte für Sie und Ihre Bank. Beachten Sie auch, dass ich cert.pem und key.pem verwende. Nur meine Vorliebe, damit ich leicht erkennen kann, ob Zertifikats- und Schlüsseldateien im PEM- oder DER-Format vorliegen. Dies wurde unter CentOS 7 mit OpenSSL 1.0.1e-fips am 11. Februar 2013 geschrieben und getestet. Postfix ist der MTA, daher ist der Befehl „sendmail“ die „Kompatibilitätsschnittstelle von Postfix zu Sendmail“.
#!/bin/bash
FROM="Your Name <[email protected]>"
FROMCERT=cert.pem
FROMKEY=key.pem
[email protected]
TOCERTS="bankcert.pem cert.pem"
SUBJECT="Signed and Encrypted Email Test - $(date)"
(echo -e "Content-Type: text/plain; charset=windows-1251\n"; cat file.txt) \
| openssl smime -sign \
-signer ${FROMCERT} \
-inkey ${FROMKEY} \
| openssl smime -encrypt \
-from "${FROM}" \
-to "${TO}" \
-subject "${SUBJECT}" \
-des3 \
${TOCERTS} \
| sendmail -t -f "${FROM}" -F "${FROM}"