【问题标题】:Hashicorp Vault - Unrecognized SSL message, plaintext connection? [duplicate]Hashicorp Vault - 无法识别的 SSL 消息,明文连接? [复制]
【发布时间】:2016-08-09 05:37:56
【问题描述】:

我正在尝试设置一个 java 应用程序以连接到 Hashicorp 的保险库并使用 TLS 后端进行身份验证(使用 SSL 证书)

我正在使用 apache httpcomponents 4.4 如下:

final CloseableHttpClient httpclient = HttpClients.custom().setSSLContext(mySslContext).build();
final CloseableHttpResponse response = httpclient.execute(myRequest)

其中 myRequest 是对 url 的 Post 调用:https://127.0.0.1:8200/v1/auth/cert/login

mySslContext 是使用密钥库文件构建的

我已按如下方式设置保险库:

vault server -dev
vault auth-enable cert
vault write auth/cert/certs/default display_name=default policies=default certificate=@C:/dev/keys/vault/vaultPriKey.pem ttl=3600

然而,当我尝试执行我得到的请求时:

Unrecognized SSL message, plaintext connection?

我是否缺少某种形式的配置?

【问题讨论】:

  • 您可以尝试用浏览器打开127.0.0.1:8200/v1/auth/cert/login,看看8200端口是否真的是SSL端口。如果你有 openssl,你可以尝试启动它的服务器:openssl s_server -key key.pem -cert cert.pem -accept 44330 -www 并检查 java 客户端是否可以连接。有关更多信息,请参阅:blog.jorisvisscher.com/2015/07/22/…

标签: java ssl apache-httpcomponents hashicorp-vault


【解决方案1】:

我需要在没有开发环境的情况下设置保管库

使用了此示例配置:(注意,不使用 -dev 您需要对其进行初始化和解封)

backend "inmem" {
  address = "127.0.0.1:8500"
  path = "vault"
}

listener "tcp" {
    address = "127.0.0.1:9000"
    tls_disable = 1
}

listener "tcp" {
 address = "127.0.0.1:8200"
 tls_disable = 0
 tls_cert_file = "C:/my/server.pem"
 tls_key_file = "C:/my/serverkey.pkcs8"
}

就像这样,您可以在 8200 上使用 ssl 连接,而在 9000 上不使用 ssl

【讨论】:

  • 我只有一个文件,它是证书、颁发证书、caChain 和私钥的组合。我是否将此文件分解为单独的 .pem 文件以使其正常工作?另外,如果我使用这个命令vault server -config=config.hcl来加载这个配置,我还需要初始化和解封吗?
猜你喜欢
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2016-08-28
  • 2011-09-25
相关资源
最近更新 更多