使用Chef向OpenShift API请求时遇SSL验证失败的解决方法
碰到过类似的Chef与OpenShift/Minishift交互的SSL问题,给你几个可行的解决思路:
方法1:临时绕过Chef的SSL证书验证
如果只是测试环境,不想纠结证书问题,可以直接在Chef的http_request资源里关闭SSL验证。这是最快的临时方案,但生产环境绝对不建议使用,会带来安全风险。
示例代码:
http_request 'create_minishift_project' do url 'https://<你的Minishift API地址>/api/v1/projects' method :post headers( 'Content-Type' => 'application/json', 'Authorization' => 'Bearer <你的认证Token>' ) body '{ "metadata": { "name": "my-new-project" } }' ssl_verify_mode :verify_none # 关闭SSL证书验证 end
方法2:让Minishift API接受HTTP请求
如果你的场景允许非加密通信,可以修改Minishift配置,开启HTTP端口:
- 先获取Minishift的IP:
minishift ip - 配置OpenShift API Server启用HTTP监听:
minishift openshift config set --api-server-arguments="--insecure-bind-address=0.0.0.0" --api-server-arguments="--insecure-port=8080" - 重启Minishift使配置生效:
minishift restart
之后你就可以用http://<Minishift IP>:8080作为API地址发起请求,Chef无需处理SSL验证。
方法3:正确获取并导入Minishift的SSL证书(推荐用于正式环境)
你之前用OpenSSL下载证书失败,是因为没指定SNI(服务器名称指示)。Minishift的证书通常绑定了openshift这个服务器名,你可以通过IP+SNI参数来正确获取证书:
- 获取Minishift IP后,执行以下命令下载证书:
openssl s_client -connect <Minishift IP>:8443 -servername openshift | openssl x509 -outform PEM > minishift-cert.pem - 将证书复制到Chef的信任证书目录:
cp minishift-cert.pem /etc/chef/trusted_certs/ - 确保证书文件权限正确(Chef客户端能读取),之后再运行配方就不会出现SSL验证失败的问题了。
内容的提问来源于stack exchange,提问作者dafjk jkjdfkj
相关产品推荐
相关产品推荐

