2015-09-04 85 views
1

使用TLS 1.2嘗試連接到https服務器(https://3dsecure.kkb.kz)。使用TLS 1.2協議的clojure https連接

(defn- http-request-clojure [xml req-type] 
    (let [url-info (url-map req-type) 
    (prepare-response (.toString (:body (client/get 
             (str (:url url-info) "?" 
              (and (:name url-info) 
                (str (:name url-info) "=")) 
              (URLEncoder/encode xml)) 
             {:insecure? true 
             :socket-timeout 10000 
             :conn-timeout 10000})))))) 

出現錯誤 「javax.net.ssl.SSLException:收到致命警報:PROTOCOL_VERSION」

的OpenSSL 1.0.1g,Java 7中

任何想法什麼不順心?

回答

0

這不是你,這是他們:他們的Qualys SSL Labs report

Java 6u45 No SNI 2 Protocol or cipher suite mismatch Fail3 
Java 7u25    Protocol or cipher suite mismatch Fail3 
Java 8u31 TLS 1.2  TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) No FS  112 

至少從今天。他們可以隨時解決這個問題,所以希望你有足夠密切的關係來禮貌地鼓勵他們遵循這個鏈接,並且可能更新openssl,以免他們不易受到協議降級攻擊。

這幾乎總是改變nginx或apache配置的一個簡單問題,雖然它可能需要一些小工具來確保所有設備仍然可以連接。 SSL實驗室是一個驚人的資源,用於說明這一點。

從你的角度來看,是使用Java 8的一個選項嗎?這將是最簡單的方式。

+0

我已經通過設置自定義SSLConnectionSocketFactory成功地連接到java 7中的這個服務器與java的例子與Apache http lib(這是基地的clj-http)。但我無法找到在clj-http中如何做同樣的事情。 – Amigo