Criptografia PKCS7

1

Eu preciso do seu apoio. Eu queria fazer criptografia pkcs usando meu certificado e certificado de terceiros.

Eu tenho componentes abaixo e queria ter o arquivo de saída criptografado pkcs7.

Source file : PayFile_143_2300000004_20170508_161457.txt My certificate for signin :

mycertificate.cer and its private key is keyfile.key Third party bank certifiate(public) : public_2017-2018_base64enc.cer

Então, se eu usar o comando abaixo

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

Terei o arquivo de saída criptografado PKCS7 de saída correto. Gentilmente me avise.

Mas quando o banco está descriptografando em seu final, eles estão enfrentando o problema com o cabeçalho

Abaixo estão os registros de descriptografia fornecidos pelo banco

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...

Pode, por favor, verificar e informar-me onde está o problema

Aprecie sua ajuda !! obrigado Nikhil

    
por Nikhil Jain 01.06.2017 / 21:48

1 resposta

2

Parece que o banco está descriptografando, mas não pode analisar o SMIME que representa o arquivo assinado. Isso está sendo enviado via e-mail? Você já tentou alterar o formato do arquivo assinado usando "-outform PEM"?

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

Aqui está um pequeno script que envia mensagens assinadas e criptografadas. Substitua as variáveis de ambiente pelos valores para você e seu banco. Observe também que eu uso cert.pem e key.pem. Apenas minha preferência para que eu possa identificar facilmente se os arquivos de certificado e chave estão no formato PEM ou DER. Isso foi escrito e testado no CentOS 7, com OpenSSL 1.0.1e-fips 11 de fevereiro de 2013. Postfix é o MTA, portanto, o comando 'sendmail' é a interface de compatibilidade 'Postfix to 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}"
    
por 01.06.2017 / 23:56

Tags