Шифрувати дуже великий файл за допомогою smime не рекомендується, оскільки ви можете зашифрувати великі файли за допомогою опції -stream, але не розшифрувати отриманий файл через апаратні обмеження див.
Як вже згадувалося вище, криптографічний ключ не призначений для шифрування довільно довгих файлів. Тому наступні команди згенерують фразу для передачі, зашифрують файл за допомогою симетричного шифрування, а потім зашифрують фразу для передачі за допомогою асиметричного (відкритого ключа). Примітка: smime включає використання первинного відкритого ключа та резервного ключа для шифрування парольної фрази. Резервна пара відкритих / приватних ключів буде розумною.
Генерація випадкових паролів
Встановіть значення RANDFILE у файл, доступний поточному користувачеві, згенеруйте файл passwd.txt та очистіть налаштування
export OLD_RANDFILE=$RANDFILE
RANDFILE=~/rand1
openssl rand -base64 2048 > passwd.txt
rm ~/rand1
export RANDFILE=$OLD_RANDFILE
Шифрування
Використовуйте команди нижче, щоб зашифрувати файл, використовуючи вміст passwd.txt як пароль, а AES256 - до файлу base64 (-a). Зашифруйте passwd.txt за допомогою асиметричного шифрування у файл XXLarge.crypt.pass за допомогою первинного відкритого ключа та резервного ключа.
openssl enc -aes-256-cbc -a -salt -in XXLarge.data -out XXLarge.crypt -pass file:passwd.txt
openssl smime -encrypt -binary -in passwd.txt -out XXLarge.crypt.pass -aes256 PublicKey1.pem PublicBackupKey.pem
rm passwd.txt
Розшифровка
Дешифрування просто розшифровує XXLarge.crypt.pass до passwd.tmp, дешифрує XXLarge.crypt до XXLarge2.data і видаляє файл passwd.tmp.
openssl smime -decrypt -binary -in XXLarge.crypt.pass -out passwd.tmp -aes256 -recip PublicKey1.pem -inkey PublicKey1.key
openssl enc -d -aes-256-cbc -a -in XXLarge.crypt -out XXLarge2.data -pass file:passwd.tmp
rm passwd.tmp
Це тестувалось щодо файлів> 5 ГБ ..
5365295400 Nov 17 10:07 XXLarge.data
7265504220 Nov 17 10:03 XXLarge.crypt
5673 Nov 17 10:03 XXLarge.crypt.pass
5365295400 Nov 17 10:07 XXLarge2.data