【发布时间】:2018-07-25 07:11:09
【问题描述】:
我正在尝试在 Vault 中设置基于证书的身份验证。对于测试,我刚刚创建了一个干净的 Vault 设置。保险库配置如下:
listener "tcp" {
address = "192.168.33.10:8200"
tls_cert_file = "/etc/vault/vault_cert.pem"
tls_key_file = "/etc/vault/vault_key.pem"
tls_disable_client_certs = false
tls_disable = false
}
listener "tcp" {
address = "127.0.0.1:8200"
tls_disable = true
}
storage "file" {
path = "/etc/vault/data"
}
我已经启动并解封了 Vault 并启用了证书身份验证:
[vagrant@localhost ~]$ ./vault status
Key Value
--- -----
Seal Type shamir
Sealed false
Total Shares 5
Threshold 3
Version 0.9.3
Cluster Name vault-cluster-37dffb3b
Cluster ID 1ddd4712-99f6-3691-a066-d476fbc6d7c6
HA Enabled false
[vagrant@localhost ~]$ ./vault auth list
Path Type Description
---- ---- -----------
cert/ cert n/a
token/ token token based credentials
现在我已经生成了尚未添加到 Vault 的 ssl 密钥/证书对,所以我希望 Vault 告诉我证书无效(至少这是我从阅读来源 here 的理解。虽然答案我' m getting 表示根本没有提供证书:
[vagrant@localhost ~]$ VAULT_ADDR='https://192.168.33.10:8200' ./vault login -method cert -tls-skip-verify -client-cert=./client_cert.pem -client-key=./client_key.pem
Error authenticating: Error making API request.
URL: PUT https://192.168.33.10:8200/v1/auth/cert/login
Code: 400. Errors:
* client certificate must be supplied
根据我在sources 中找到的信息,仅当根本没有向 Vault 提供证书时才会返回此错误消息。只是为了确保这在 Vault cli 客户端中没有问题,我尝试对 curl 执行相同的操作,但得到了相同的结果:
[vagrant@localhost ~]$ curl -iv -k -X POST --cert ./client_cert.pem --key ./client_key.pem https://192.168.33.10:8200/v1/auth/cert/login
* About to connect() to 192.168.33.10 port 8200 (#0)
* Trying 192.168.33.10...
* Connected to 192.168.33.10 (192.168.33.10) port 8200 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* skipping SSL peer certificate verification
* SSL connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate:
* subject: CN=Vault,E=vault@example.com,O=Exmaple,L=Berlin,ST=BERLIN,C=DE
* start date: Feb 14 15:59:37 2018 GMT
* expire date: Feb 12 15:59:37 2028 GMT
* common name: Vault
* issuer: CN=Vault,E=vault@example.com,O=Exmaple,L=Berlin,ST=BERLIN,C=DE
> POST /v1/auth/cert/login HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 192.168.33.10:8200
> Accept: */*
>
< HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request
< Cache-Control: no-store
Cache-Control: no-store
< Content-Type: application/json
Content-Type: application/json
< Date: Wed, 14 Feb 2018 16:20:57 GMT
Date: Wed, 14 Feb 2018 16:20:57 GMT
< Content-Length: 51
Content-Length: 51
<
{"errors":["client certificate must be supplied"]}
* Connection #0 to host 192.168.33.10 left intact
在跟踪模式下运行的 Vault 服务器在此交互过程中不提供任何日志。但是,如果我将使用来自不同证书的密钥试图故意破坏 TLS,我会在 Vault 中看到一条错误消息,表明这一点。
知道这个设置有什么问题吗?
【问题讨论】:
-
您解决了这个问题吗?我目前遇到了同样的问题。
-
不幸的是,不是。我一次使用不同的身份验证方法解决了这个问题,但最近没有调查过。
标签: ssl hashicorp-vault