我使用Consul来注册一个Web应用程序 . Web应用程序使用Java Consul客户端注册check . 我能够使用自签名CA激活TLS和加密,以加密 Consul 代理之间以及我的webapp和consul代理之间的交换 . 但我无法使用自签名CA签名证书对HTTPS进行检查 .
我的Web应用程序是安全的,只能在具有自签名证书的HTTPS上进行侦听 . 当我向 Consul 注册会话并提供https:// ... URL进行检查时,我被拒绝:
com.orbitz.consul.ConsulException:Consul请求失败,状态为[500]:rpc错误:rpc错误:检查'service:a4cHealthCheck:172.17.0.3'处于临界状态
在consul agent日志中,我可以看到:
2016/07/23 08:24:45 [WARN] agent: http request failed 'https://172.17.0.3:8443/rest/latest/health/check': Get https://172.17.0.3:8443/rest/latest/health/check: x509: certificate signed by unknown authority
似乎 Consul 代理人不接受自签名的支票证书 . 如何仅为检查禁用SSL验证或为检查提供检查程序?
2 回答
Golang crypto lib有一条固定路径,他寻找值得信赖的权威 . 这取决于Os,但对于Linux系统,您可以检查:
https://golang.org/src/crypto/x509/root_linux.go
因此,您可以通过将CA安装到系统默认值中来解决问题 .
有关如何安装根证书,请参阅
https://superuser.com/questions/437330/how-do-you-add-a-certificate-authority-ca-to-ubuntu
或其他OS:
http://kb.kerio.com/product/kerio-connect/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html
HTH;)
您可以使用属性
tls_skip_verify
禁用HTTPS检查 . 它在Consul checks documentation的HTTP部分中描述 . 如果使用JSON文件配置代理,则以下是配置示例 .