搬瓦工 VPS HashiCorp Vault PKI 证书管理教程

HashiCorp Vault 是业界领先的密钥和机密信息管理平台,其内置的 PKI Secrets Engine 可以作为功能完整的证书颁发机构,支持动态签发短期证书、自动证书轮转和完整的证书生命周期管理。与 CFSSLStep 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 功能,可以选择更轻量的 CFSSLStep CA。配合 SOPS 进行配置文件加密管理,可以建立完整的密钥安全体系。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。