Curl minikube apiserver使用客户端证书进行身份验证



关于使用客户端证书和密钥的curl向minikube-api服务器进行身份验证的基本问题。

当我在api服务器上卷曲/ping端点时,我得到一个403(预期,身份验证失败(

curl -k https://127.0.0.1:32776/ping

{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "forbidden: User "system:anonymous" cannot get path "/ping"",
"reason": "Forbidden",
"details": {
},
"code": 403
}

为了解决这个问题,我正在尝试下面的curl命令,我正在使用

curl -v
--cert /Users/blah/.minikube/profiles/minikube/client.crt 
--cacert /Users/blah/.minikube/ca.cert 
--key /Users/blah/.minikube/profiles/minikube/client.key 
https://127.0.0.1:32776/ping

然后我得到

*   Trying 127.0.0.1:32776...
* Connected to 127.0.0.1 (127.0.0.1) port 32776 (#0)
* ALPN, offering http/1.1
* WARNING: SSL: CURLOPT_SSLKEY is ignored by Secure Transport. The private key must be in the Keychain.
* WARNING: SSL: Certificate type not set, assuming PKCS#12 format.
* SSL: Can't find the certificate "/Users/blah/.minikube/profiles/minikube/client.crt" and its private key in the Keychain.
* Closing connection 0
curl: (58) SSL: Can't find the certificate "/Users/blah/.minikube/profiles/minikube/client.crt" and its private key in the Keychain.

我正在使用中所述的上述证书kubectl config view

apiVersion: v1
clusters:
- cluster:
certificate-authority: /Users/blah/.minikube/ca.crt
server: https://127.0.0.1:32776
name: minikube
contexts:
- context:
cluster: minikube
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate: /Users/blah/.minikube/profiles/minikube/client.crt
client-key: /Users/blah/.minikube/profiles/minikube/client.key

我想这是我缺少的更多卷曲使用细节,迷你kube似乎很好。此外,我很好奇其他人是如何向minikube验证curl请求的?

您使用的curl版本是什么?什么操作系统?这不是MacOSX吗?

非常类似的问题当试图通过curl访问API时出错,其中也没有看到有效的当前证书。解决方案是将密钥转换为pkcs12

RaeesHatti在如何使用CURL访问Kubernetes API的帖子中也建议使用

我发现我使用了错误的证书,SSL:不能加载证书[]及其私钥:OSStatus-25299是特定于OS X Mavericks+中CURL的问题,其中CURL接受仅P12格式的证书。您必须在中使用证书$HOME/.minikube/目录而不是$HOME/.minikube/certs必须将证书转换为P12格式,然后使用它们。

最新更新