Похоже, банк расшифровывает, но не может проанализировать SMIME, представляющий подписанный файл. Это отправляется по электронной почте? Вы пытались изменить формат подписанного файла с помощью «-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
Вот короткий скрипт, который отправляет подписанные и зашифрованные сообщения. Замените переменные среды значениями для вас и вашего банка. Также обратите внимание, что я использую cert.pem и key.pem. Это просто мое предпочтение, поэтому я могу легко определить, в каком формате находятся файлы сертификатов и ключей: PEM или DER. Это было написано и протестировано на CentOS 7 с OpenSSL 1.0.1e-fips 11 февраля 2013 года. Postfix — это MTA, поэтому команда «sendmail» — это «интерфейс совместимости Postfix с Sendmail».
#!/bin/bash
FROM="Your Name <email@domain.com>"
FROMCERT=cert.pem
FROMKEY=key.pem
TO=recipient@bank.com
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}"