领事检查HTTPS自签名

时间:2016-07-23 08:48:37

标签: consul

我使用Consul注册Web应用程序。 Web应用程序使用Java Consul客户端注册check。我能够使用自签名CA激活TLS和加密,以加密领事代理之间以及我的webapp和consul代理之间的交换。但我无法使用自签名CA签名证书对HTTPS进行检查。

我的网络应用程序是安全的,只能在带有自签名证书的HTTPS上进行侦听。当我向领事注册会话并提供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

似乎领事代理人不接受自签名的支票证书。如何仅针对检查禁用SSL验证或为检查提供检查器?

2 个答案:

答案 0 :(得分:2)

您可以使用属性tls_skip_verify禁用HTTPS检查。它在Consul checks documentation的HTTP部分中进行了描述。 如果您使用JSON文件配置代理,则以下是配置示例。

{
  "services": [
    {
      "id": "instance-1",
      "name": "ManagementService",
      "address": "localhost",
      "port": 11080,
      "checks": [
        {
          "id": "api",
          "name": "HTTP API",
          "http": "https://localhost:11081/service/monitoring/ping",
          "tls_skip_verify": true,
          "interval": "5s",
          "timeout": "1s"
        }
      ]
    }
  ]
}

答案 1 :(得分:1)

Golang crypto lib有一条固定路径,他寻找值得信赖的权威。这因操作系统而异,但对于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