首页/数据/备份与容灾速查/openssl 加密备份文件

openssl 加密备份文件

用 openssl enc 对备份归档做口令加密,适合传输与存放过程中的保护;使用 -pbkdf2 提高口令派生强度。

备份与容灾速查数据更新于 2026-10-13

openssl 加密备份文件

用 openssl enc 给备份归档加一层口令加密,保护传输与存放过程中的数据:加密后再放到介质或对象存储,即使存储侧被访问也看不到明文。命令简单、无需额外依赖是它的优势;但它缺少密钥管理与完整性保护,长期方案更适合用 gpg 或备份软件内置的加密能力。

基本信息

适用平台几乎所有带 OpenSSL 的系统(Linux、macOS、Windows 也可用)
常用算法aes-256-cbc 配合 -pbkdf2 做密钥派生
口令输入-pass file: 指定口令文件,或用交互输入
适用边界临时传输与离线介质;长期保存优先 gpg 或备份软件内置加密

典型使用场景

  • 离线介质保护:放在移动硬盘或磁带上的归档做一层口令加密
  • 跨网络传输前加密:交由不受控通道搬运时降低泄露风险
  • 临时保护:快速给单个文件加密,不需要引入额外工具
  • 合规过渡:在正式加密方案落地前满足最低的加密要求
  • 与压缩配合:先压缩再加密,兼顾体积与保密

加密与解密

加密与解密
openssl enc -aes-256-cbc -pbkdf2 -salt -in backup.tar -out backup.tar.enc
# 解压与解密:顺序与压缩时相反
openssl enc -d -aes-256-cbc -pbkdf2 -in backup.tar.enc -out backup.tar
# 用权限受限的口令文件,避免口令出现在命令行与 shell 历史
printf '%s' "$BACKUP_PASS" > /root/.backup.pass && chmod 600 /root/.backup.pass
openssl enc -aes-256-cbc -pbkdf2 -salt -pass file:/root/.backup.pass \
  -in backup.tar -out backup.tar.enc
# 解密后校验,确认解密结果与原始归档一致
sha256sum backup.tar && tar -tf backup.tar | head

参数与注意

参数含义注意
-pbkdf2使用 PBKDF2 派生密钥省略则密钥派生强度弱,旧脚本升级时应补上
-salt加入随机盐不加密盐会让相同口令产生相同密文
-pass file:从文件读口令文件权限必须收紧
-aes-256-cbc对称加密算法选错算法会导致解压侧无法解密
口令出现在命令行会留在进程列表与 shell 历史中:使用 -pass file: 指定权限受限的口令文件,或改为交互式输入。口令丢失即数据不可恢复,必须与备份分开保管。
加密后的数据无法参与去重,先压缩再加密在存储效率上更合理;加密也不提供内容完整性保护,需要时应改用带认证的加密方案。

易错点

  • 忘记加 -pbkdf2:密钥派生强度不足,旧脚本升级时应显式补上
  • 口令与备份放在同一位置:任何人拿到介质即可解密,加密形同虚设
  • 先加密再压缩:压缩率大幅下降,体积与时间都不划算
  • 口令写在命令行里:进程列表与命令历史泄露密钥

数据来源与参考

  • OpenSSL 文档(enc 命令与 -pbkdf2 选项)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌