在 Ubuntu 上安装 HashiCorp Vault
本指南介绍如何在 Ubuntu 24.04 LTS 服务器上安装和配置 HashiCorp Vault。Vault 用于集中、安全地管理密钥(API 密钥、密码、TLS 证书)。
现代应用依赖各类密钥:API 密钥、数据库密码、TLS 证书、加密密钥。硬编码或明文存储存在风险。Vault 提供安全存储、动态凭据生成、加密即服务及细粒度访问控制。
订购服务器
要托管 Vault 实例,HostMyServers 提供多种方案:
- Performance VPS - 适合小团队
- NVMe VPS - 性价比高
- 经济型专用服务器 - 中等负载部署
- 性能专用服务器 - 最佳性能
前提条件
- 以 root 或具有 sudo 权限的用户进行 SSH 访问
- Ubuntu 24.04 LTS 64 位系统
- 指向服务器 IP 的 DNS A 记录(用于 Let's Encrypt)
- 端口 8200(Vault HTTPS)和 80(Certbot,临时)可访问
配置要求
| 组件 | 最低 | 推荐 |
|---|---|---|
| 内存 | 512 MB | 1-2 GB |
| CPU | 1 核 | 2 核 |
| 存储 | 5 GB | 10 GB |
| 网络 | 100 Mbps | 1 Gbps |
Vault 在 8200 端口上通过 HTTPS 监听。Web 界面和 API 使用该端口。
连接服务器
通过 SSH 连接 Ubuntu 服务器(默认端口 22,或自定义端口 / PEM 密钥):
ssh 用户@服务器IP地址
系统更新
安装 Vault 前更新软件包列表:
sudo apt update
sudo apt upgrade -y
从 HashiCorp 仓库安装 Vault
HashiCorp 提供官方 APT 仓库以安装最新稳定版 Vault。安装依赖、添加 GPG 密钥和仓库后执行:
sudo apt update
sudo apt install -y vault
验证:vault --version。可选:vault -autocomplete-install 和 exec $SHELL。
防火墙配置
开放 8200 和 80 端口并重载 UFW。80 端口临时供 Certbot 使用。
Let's Encrypt TLS 证书
安装 Certbot,为域名(如 vault.您的域名.com)申请证书,将 fullchain.pem 和 privkey.pem 复制到 /opt/vault/tls/,设置属主为 vault:vault 和权限 600。在 /etc/letsencrypt/renewal-hooks/deploy/vault.sh 中创建续期脚本,更新证书并重载 Vault。
请将所有命令和文件中的 vault.您的域名.com 替换为您的实际域名。
Vault 生产配置
备份 /etc/vault.d/vault.hcl,然后创建配置:ui = true、storage "file"(path /opt/vault/data)、listener "tcp" 监听 0.0.0.0:8200 并指向 cert.pem 与 key.pem、api_addr 和 cluster_addr 使用您的域名。启用并重启服务:sudo systemctl enable vault、sudo systemctl restart vault。
CLI 环境变量
echo 'export VAULT_ADDR="https://vault.您的域名.com:8200"' >> ~/.bashrc
source ~/.bashrc
检查:vault status(初始化前:Initialized: false,Sealed: true)。
初始化与解封 (unseal)
Vault 以密封状态启动。初始化会生成主密钥、5 个解封密钥(需 3 个,Shamir)和 root token。
解封密钥和 root token 仅显示一次。请妥善保管。丢失后数据将无法访问。
执行 vault operator init,保存 5 个解封密钥和 Initial Root Token。然后三次执行 vault operator unseal,每次输入一个密钥。成功后显示 Sealed: false。登录:vault login(输入 root token)。
访问 Web 界面
在浏览器中打开 https://vault.您的域名.com:8200,选择 Token 方式,输入 root token。
常用命令
| 命令 | 说明 |
|---|---|
vault status | Vault 状态 |
vault operator unseal | 提供解封密钥 |
vault login | 使用 token 登录 |
sudo systemctl status vault | 服务状态 |
sudo systemctl restart vault | 重启 Vault |
文件结构
| 路径 | 说明 |
|---|---|
/etc/vault.d/vault.hcl | 配置文件 |
/opt/vault/data/ | Vault 数据(加密) |
/opt/vault/tls/ | TLS 证书与密钥 |
故障排除
- 服务无法启动:查看
journalctl -u vault.service,检查/opt/vault权限和配置语法。 - TLS 错误:确认 cert.pem 和 key.pem 存在且属主正确,执行
certbot renew --dry-run。 - 重启后再次密封:需再次提供 3 个解封密钥。自动化解封见 Vault 文档(auto-unseal)。