java - Cloudflare 免费 SSL ConnectException

标签 java ssl cloudflare

我已将我的网站置于 CloudFlare 之后,因为它具有免费的 SSL 功能。

在浏览器中一切正常。 SSL 锁在浏览器中正确显示。

但是如果我使用 Java 程序向同一个 Web 发出 HTTP GET 请求,我将得到异常。

以下是我写的小java程序。

package com.mycompany.textexception;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class Main {
    public static void main(String [] args) throws IOException, URISyntaxException{
        URI loginUri = new URI("https://site-behind-cf.in/");

        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet( loginUri );
        HttpResponse response = httpclient.execute( httpget );
        System.out.println("Done");
    }
}

异常(exception)的是

Exception in thread "main" java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:656)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:524)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:403)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
    at com.mycompany.textexception.Main.main(Main.java:26)

注意:如果我指向 https://www.google.co.inhttps://my-other-web.com,相同的程序将正常工作> 它不在 CloudFlare 之后,并且有自己的 SSL。

最佳答案

SSL 免费计划使用来自 Comodo 或 GlobalSign 的椭圆曲线数字签名算法 (ECDSA) 证书。

这些证书仅适用于支持服务器名称指示 (SNI) 的现代浏览器

如果你使用 Cloudflare Pro,你可能不会遇到同样的问题

关于java - Cloudflare 免费 SSL ConnectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31583303/

相关文章:

php - cURL 错误 - Laravel + Mailgun 的 SSL 证书

Java HTTPS 代理/重定向服务器

jndi - 无法通过JNDI与Websphere MQ SSL channel 连接

redirect - Cloudflare 将所有内容从 domain1.com 重定向到 domain2.com

java - 关闭android应用,并在Home press上运行该功能

java - 从 arrayList<String> 演示文稿中删除节点

ssl - 在 DigitalOcean 中使用 cloudflare 的 Universal SSL

docker - 带有 cloudflare SSL 的 jwilder/nginx-proxy 没有

java - 如何检查由任何非单词标记分隔的包含 'tags' 的字符串是否包含 Java 中的给定标记

java - (Java) 将符号字符串转换为单位数字整数数组