🔐 GPG 在 CentOS 中的核心概念与命令详解
GPG(GNU Privacy Guard) 是遵循 OpenPGP 标准的开源加密工具,用于文件/通信的加密、解密、签名及密钥管理。其核心原理是 非对称加密:公钥加密数据,私钥解密数据,确保传输安全性和身份真实性。
⚙️ 一、CentOS 安装与基础命令
1. 安装 GPG
sudo yum install gnupg # 安装GPG
gpg --version # 验证安装及版本
2. 密钥管理
| 命令 | 功能 | 示例 |
|---|---|---|
| 生成密钥对 | 创建公钥+私钥 | gpg --gen-key(交互式设置类型/有效期) |
| 列出密钥 | 查看公钥/私钥 | gpg --list-keys(公钥)gpg --list-secret-keys(私钥) |
| 导出密钥 | 备份或共享密钥 | gpg --export > pubkey.asc(公钥)gpg --export-secret-keys -a > private.key(私钥,需加密存储) |
| 导入密钥 | 添加他人公钥 | gpg --import pubkey.asc |
3. 加密与解密
-
加密文件(使用接收者公钥):
gpg --encrypt --recipient "接收者邮箱" file.txt # 输出 file.txt.gpg -
解密文件(使用自身私钥):
gpg --decrypt file.txt.gpg > output.txt # 需输入私钥密码
4. 签名与验证
-
签名文件(证明来源):
gpg --sign file.txt # 生成 file.txt.gpg gpg --detach-sign file.txt # 分离签名(生成 .sig 文件) -
验证签名:
gpg --verify file.txt.sig file.txt # 验证完整性与签名者身份
🛡️ 二、典型应用场景与示例
1. 敏感配置文件的保护
场景:自动化脚本需读取含数据库密码的配置文件。
解决方案:
# 加密配置文件
gpg --encrypt --recipient "admin@example.com" db_config.conf
# 脚本中解密(运行时输入密码)
gpg --decrypt db_config.conf.gpg > temp.conf
mysql --defaults-file=temp.conf # 使用临时文件操作
rm temp.conf # 立即删除明文
2. 跨服务器安全传输数据
场景:从服务器 A 向服务器 B 传输备份文件。
流程:
-
服务器 B 生成密钥对,导出公钥发给 A;
-
A 用 B 的公钥加密文件:
gpg --encrypt --recipient "serverB" backup.tar -
B 收到
backup.tar.gpg后解密:gpg --decrypt backup.tar.gpg > backup.tar
3. 软件包签名验证
场景:确保下载的 RPM 包未被篡改。
操作:
# 导入开发者公钥
gpg --import developer_pubkey.asc
# 验证签名
gpg --verify package.rpm.sig package.rpm
# 输出 "Good signature" 表示验证通过
4. 安全通信(加密邮件/消息)
场景:通过管道加密命令行消息发送给他人。
示例:
echo "机密信息" | gpg --encrypt --recipient "alice@example.com" | send_to_alice
# Alice 解密:`gpg --decrypt`
⚠️ 三、安全建议
-
私钥保护:
- 私钥必须加密存储(如
gpg --export-secret-keys -a导出时设置密码)。 - 避免私钥泄露,一旦丢失无法解密历史数据。
- 私钥必须加密存储(如
-
密钥生命周期管理:
- 设置密钥有效期(
gpg --full-generate-key时可选)。 - 定期轮换密钥,过期密钥用
gpg --gen-revoke吊销。
- 设置密钥有效期(
-
公钥分发可信性:
- 通过公钥服务器(如
keys.openpgp.org)发布公钥:gpg --keyserver hkps://keys.openpgp.org --send-keys [KeyID]
- 通过公钥服务器(如
💎 总结
GPG 在 CentOS 中是保障数据安全的核心工具,适用于 文件加密、通信保密、软件验签 等场景。通过密钥对的非对称加密机制,结合命令行高效操作,可无缝集成到自动化流程中。重点需关注 私钥安全管理 和 密钥生命周期控制,以规避安全风险。
浙公网安备 33010602011771号