Ssl Clojure:使用aleph连接到TLS enable docker守护程序

Ssl Clojure:使用aleph连接到TLS enable docker守护程序,ssl,clojure,docker,netty,aleph,Ssl,Clojure,Docker,Netty,Aleph,我正在尝试使用aleph连接到一个相互验证的Docker守护进程。aleph文档显示,您可以出于身份验证目的传入netty SSL上下文。似乎我正确地创建了SslContext,但所有请求都已关闭 (require '[aleph.http :as http]) (import '[io.netty.handler.ssl SslContext]) (import '[io.netty.handler.ssl SslProvider]) (import '[io.netty.handler.s

我正在尝试使用aleph连接到一个相互验证的Docker守护进程。aleph文档显示,您可以出于身份验证目的传入netty SSL上下文。似乎我正确地创建了SslContext,但所有请求都已关闭

(require '[aleph.http :as http])
(import '[io.netty.handler.ssl SslContext])
(import '[io.netty.handler.ssl SslProvider]) 
(import '[io.netty.handler.ssl SslContextBuilder])

(def ctx
  (doto (SslContextBuilder/forClient)
        (.keyManager (java.io.File. "certs/cert.pem") 
                     (java.io.File. "certs/client.pkcs8"))
        (.trustManager (java.io.File. "certs/ca.pem"))
        (.build)))

(let [pool (http/connection-pool {:connection-options {:ssl-context ctx}})]
  @(http/get (str "http://" host ":" port "/info") {:pool pool}))
结果为:“ExceptionInfo连接已关闭clojure.core/ex-info(core.clj:4617)”


有没有人找到使用TLS连接的好方法?我试过了,但这对内蒂不太管用。救命啊

发现我创建的SslContext对象错误。应该是:

(def ctx
 (.build
  (.keyManager
   (.trustManager (SslContextBuilder/forClient) ca)
   cert client-key)))

;; pass in ssl-context via pool
(let [pool (http/connection-pool {:connection-options {:ssl-context ctx}})]
  (-> @(http/get (str "https://" host ":" port "/info") {:pool pool})
      :body
      bs/to-string))

发现我创建的SslContext对象错误。应该是:

(def ctx
 (.build
  (.keyManager
   (.trustManager (SslContextBuilder/forClient) ca)
   cert client-key)))

;; pass in ssl-context via pool
(let [pool (http/connection-pool {:connection-options {:ssl-context ctx}})]
  (-> @(http/get (str "https://" host ":" port "/info") {:pool pool})
      :body
      bs/to-string))

能否提供更多信息(调试日志、整个异常堆栈跟踪等)?能否提供更多信息(调试日志、整个异常堆栈跟踪等)?