在Java中使用自签名证书(Using Self Signed certificate in jav

2019-10-17 08:36发布

我想连接到一个短信网关。 我发现下面的代码。

public void smsSender(String username, String password, String to,
        String text) throws IOException {

    try {
        String data = "username=" + username + "&password=" + password
                + "&to=" + to + "&text=" + text;

        URL url = new URL("https://sendsms.abc.com:1010/sms.php");

        HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
        urlc.setRequestMethod("POST");
        urlc.setDoOutput(true);
        urlc.setRequestProperty("Content-type",
                "application/x-www-form-urlencoded");

        BufferedWriter br = new BufferedWriter(new OutputStreamWriter(
                urlc.getOutputStream()));

        br.write(data);
        br.flush();

        BufferedReader rd = new BufferedReader(new InputStreamReader(
                urlc.getInputStream()));
        String line;
        while (null != ((line = rd.readLine()))) {
            output = line;
            System.out.println(output);
        }

        rd.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

当我尝试使用此方法的Eclipse发送错误消息进行连接。

无法找到有效的认证路径请求的目标

我试图访问服务器使用自签名证书。 我是新来这个领域。 我怎么解决这个问题。 提前致谢 :)

Answer 1:

为了使通过SSL远程方法调用,客户端需要信任服务器的证书。 至于你说的服务器具有自签名证书,客户端需要明确地配置为信任证书否则连接失败。 要创建一个客户端和服务器的自签名证书之间的信任关系,请按照下述步骤,

  1. 首先,你应该得到你的客户端服务器证书。
    对于我的就是知道的方式,即打服务器的URL在浏览器中,并得到服务器的证书,并在浏览器中导入。 有可能是获得服务器证书的其他方式,但你必须去探索。

  2. 现在导出公钥从浏览器客户端的证书。 让它成为server.cer。

  3. 现在,创建客户端密钥库

    密钥工具-genkey -alias clientkeys -keyalg RSA -keystore client.keystore -storepass 123456 -keypass 123456 -dname “CN =本地主机,OU = MYOU,O = MYORG,L = MYCITY,S = MYSTATE,C = MY”

  4. 创建客户端证书

    密钥工具-export -alias clientkeys -keystore client.keystore -storepass 123456 -file client.cer

  5. 现在,导入服务器证书到客户端信任存储。

    密钥工具-import -alias serverCert -keystore client.truststore -storepass clientcert -file server.cer

  6. 如在埃里克森的评论中提到,现在加载客户端密钥库链接由维尔纳提供。

让我知道如果事情还不清楚。 但我建议你读谷歌的一些文件在客户端和服务器之间交换有关SSL握手。



文章来源: Using Self Signed certificate in java