Мой (единственный) сервер базы данных вышел из строя, и я все восстанавливаю. Я создал новый сервер и теперь просто хочу восстановить резервную копию базы данных.
У меня есть ночной сценарий, который запускает эту команду для создания зашифрованной резервной копии:
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: На самом деле, запишите все это, чтобы я не проходил через все это снова, если случится еще одна катастрофа!!
.