搬瓦工 VPS HashiCorp Vault PKI 证书管理教程
HashiCorp Vault 是业界领先的密钥和机密信息管理平台,其内置的 PKI Secrets Engine 可以作为功能完整的证书颁发机构,支持动态签发短期证书、自动证书轮转和完整的证书生命周期管理。与 CFSSL 和 Step CA 相比,Vault 提供了更强大的访问控制、审计日志和多种认证后端集成能力。本文将介绍如何在搬瓦工 VPS 上使用 Vault 管理 PKI 证书。
一、安装 Vault
# Ubuntu / Debian
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" > /etc/apt/sources.list.d/hashicorp.list
apt update && apt install vault -y
# 验证安装
vault version
二、启动和初始化 Vault
# 配置 Vault
cat > /etc/vault.d/vault.hcl <<'EOF'
storage "file" {
path = "/opt/vault/data"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = "true"
}
api_addr = "http://127.0.0.1:8200"
ui = true
EOF
mkdir -p /opt/vault/data
systemctl start vault
systemctl enable vault
# 初始化 Vault
export VAULT_ADDR='http://127.0.0.1:8200'
vault operator init -key-shares=5 -key-threshold=3
# 解封 Vault(需要使用 3 个密钥碎片)
vault operator unseal KEY_1
vault operator unseal KEY_2
vault operator unseal KEY_3
# 登录
vault login ROOT_TOKEN
三、配置根 CA
# 启用 PKI 引擎(根 CA)
vault secrets enable pki
# 设置最大 TTL 为 10 年
vault secrets tune -max-lease-ttl=87600h pki
# 生成根 CA 证书
vault write -field=certificate pki/root/generate/internal \
common_name="My Root CA" \
issuer_name="root-ca" \
ttl=87600h > /opt/vault/root_ca.crt
# 配置 CA 和 CRL URL
vault write pki/config/urls \
issuing_certificates="http://vault.example.com:8200/v1/pki/ca" \
crl_distribution_points="http://vault.example.com:8200/v1/pki/crl"
四、配置中间 CA
# 启用中间 CA 引擎
vault secrets enable -path=pki_int pki
vault secrets tune -max-lease-ttl=43800h pki_int
# 生成中间 CA CSR
vault write -format=json pki_int/intermediate/generate/internal \
common_name="My Intermediate CA" | jq -r '.data.csr' > /opt/vault/pki_int.csr
# 使用根 CA 签发中间证书
vault write -format=json pki/root/sign-intermediate \
csr=@/opt/vault/pki_int.csr \
format=pem_bundle \
ttl=43800h | jq -r '.data.certificate' > /opt/vault/intermediate.crt
# 导入中间证书
vault write pki_int/intermediate/set-signed \
certificate=@/opt/vault/intermediate.crt
五、创建证书角色
# 创建服务器证书角色
vault write pki_int/roles/server-cert \
allowed_domains="example.com" \
allow_subdomains=true \
max_ttl=720h \
key_type="ec" \
key_bits=256
# 创建客户端证书角色
vault write pki_int/roles/client-cert \
allowed_domains="example.com" \
allow_any_name=true \
max_ttl=720h \
client_flag=true \
server_flag=false
六、签发证书
# 签发服务器证书
vault write -format=json pki_int/issue/server-cert \
common_name="app.example.com" \
alt_names="www.example.com" \
ttl=720h > /opt/vault/app-cert.json
# 提取证书和私钥
jq -r '.data.certificate' /opt/vault/app-cert.json > /opt/vault/app.crt
jq -r '.data.private_key' /opt/vault/app-cert.json > /opt/vault/app.key
jq -r '.data.ca_chain[]' /opt/vault/app-cert.json > /opt/vault/ca-chain.crt
七、访问策略配置
# 创建证书签发策略
vault policy write cert-issuer - <<'EOF'
path "pki_int/issue/server-cert" {
capabilities = ["create", "update"]
}
path "pki_int/issue/client-cert" {
capabilities = ["create", "update"]
}
path "pki/ca/pem" {
capabilities = ["read"]
}
EOF
# 创建 Token
vault token create -policy=cert-issuer -period=768h
八、证书吊销
# 吊销证书(使用序列号)
vault write pki_int/revoke serial_number="SERIAL_NUMBER_HERE"
# 整理 CRL
vault write pki_int/tidy \
tidy_cert_store=true \
tidy_revoked_certs=true \
safety_buffer=72h
九、备份与运维
# 创建 Vault 快照
vault operator raft snapshot save /opt/vault/backup/vault-snapshot.snap
# 查看 PKI 统计
vault list pki_int/certs
# 查看已吊销的证书
vault list pki_int/certs/revoked
总结
HashiCorp Vault PKI 是企业级证书管理的终极方案,动态证书签发和细粒度访问控制使其远超普通 CA 工具的能力。在搬瓦工 VPS 上部署 Vault 建议至少 1GB 内存。如果只需要简单的 CA 功能,可以选择更轻量的 CFSSL 或 Step CA。配合 SOPS 进行配置文件加密管理,可以建立完整的密钥安全体系。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。