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: 指定权限受限的口令文件,或改为交互式输入。口令丢失即数据不可恢复,必须与备份分开保管。
加密后的数据无法参与去重,先压缩再加密在存储效率上更合理;加密也不提供内容完整性保护,需要时应改用带认证的加密方案。