Назад | Перейти на главную страницу

Невозможно восстановить резервную копию, сделанную с помощью `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:

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

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

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

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

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

Потом это сработало, и теперь сайт снова работает :)

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