2015-09-04 50 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