Невозможно восстановить резервную копию, созданную с помощью `openssl smime`

Мой (единственный) сервер базы данных вышел из строя, и я все восстанавливаю. Я создал новый сервер и теперь просто хочу восстановить резервную копию базы данных.

У меня есть ночной сценарий, который запускает эту команду для создания зашифрованной резервной копии:

pg_dump $DATABASE | openssl smime -encrypt -binary -text -aes256 -out $HOME/$DUMP_FILE_NAME -outform DER ~/sql_dump.pub.pem

И теперь у меня есть полученный в результате файл, поэтому я запускаю команда:

openssl smime -decrypt -in database.enc -recip sql_dump.priv.pem

Где мой файл sql_dump.priv.pem выглядит так:

-----BEGIN PRIVATE KEY-----
(private key data)
-----END PRIVATE KEY-----

Однако по какой-то причине я получаю эту ошибку вместо дешифрованного файла:

unable to load certificate
139830333706752:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE

Я не уверен, что происходит и почему, но я знаю, мне удалось несколько раз расшифровать шифрование, когда я разработал решение для резервного копирования. Итак, я знаю, что есть способ его расшифровать.

Кто-нибудь знает, что происходит не так?

P.S. Я знаю ... У меня должно быть несколько серверов баз данных, чтобы этого не произошло. А также сценарий автоматического резервного копирования или, по крайней мере, документ, как восстановиться после чего-то подобного. Я не делал этого и должен был :( урок, который выучили в следующий раз

Я использую Linux как на сервере, так и на моем портативном компьютере для разработки, если это имеет значение

РЕДАКТИРОВАТЬ:

Хорошо, теперь я на шаг ближе .

Я расшифровываю с помощью:

openssl smime -decrypt -in database.enc -recip sql_dump.pub.pem -inkey sql_dump.priv.pem

Но теперь я получаю еще одну ошибку:

Error reading S/MIME message
140276418503168:error:0D0D40D1:asn1 encoding routines:SMIME_read_ASN1:no content type:crypto/asn1/asn_mime.c:391:
0
задан 21 March 2019 в 16:39
1 ответ

Хорошо, после некоторой работы я понял, что делаю неправильно.

Во-первых, флаг -recip предназначен для открытого ключа, поэтому я изменил этот флаг, чтобы он указывал на мой открытый ключ.

Для включения закрытого ключа требуется флаг -inkey. Поэтому я также добавил это.

Наконец, флаг -outform в скрипте резервного копирования значительно совпадает с флагом -inform в скрипте восстановления. Таким образом, получившаяся команда расшифровки была следующей:

openssl smime -decrypt -inform DER -in database.enc -recip sql_dump.pub.pem  -inkey sql_dump.priv.pem

-потом она сработала и теперь сайт создан и запущен :)

TODO: На самом деле, запишите все это, чтобы я не проходил через все это снова, если случится еще одна катастрофа!!

.
0
ответ дан 5 December 2019 в 03:42

Теги

Похожие вопросы