HTTPS Post请求(不是)使用证书/哈希打印?

时间:2015-07-01 18:34:09

标签: java php ssl certificate handshake

我承认我可能没有充分了解这个主题,但我已经做了一个阅读负荷,但仍然无法回答我的问题。

据我所知,为了使用HTTPS保证通信安全,我需要使用某种公钥(让我想起pgp加密)。

我的目标是从我的java应用程序(我在其开始工作的那一刻,将重写到Android应用程序,如果重要的话)发送一个安全的POST请求到一个可通过https地址访​​问的php应用程序。

当然,我对这个主题进行了一些谷歌研究,我得到了很多关于如何建立ssl连接的结果。这些结果中没有使用任何种类的证书/哈希打印。他们只使用HttpsURLConnection代替HttpURLConnection,其他一切几乎相同。

现在,几乎复制我在这里找到的东西的粘贴是这样的:

String httpsURL = "https://xx.yyyy.zzz/requestHandler.php?getParam1=value1&getParam2=value2";

    String query = "email=" + URLEncoder.encode("abc@xyz.com", "UTF-8");
    query+="&";
    query+="password="+URLEncoder.encode("tramtarie","UTF-8");

    URL myurl = new URL(httpsURL);
    HttpsURLConnection con = (HttpsURLConnection) myurl.openConnection();
    con.setRequestMethod("POST");

    con.setRequestProperty("Content-length",String.valueOf(query.length()));
    con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
    con.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 5.0;Windows98;DigExt)");
    con.setDoOutput(true);
    con.setDoInput(true);

    DataOutputStream output = new DataOutputStream(con.getOutputStream());


    output.writeBytes(query);

    output.close();


    DataInputStream input = new DataInputStream(con.getInputStream());


    for(
    int c = input.read();
    c!=-1;c=input.read())
            System.out.print((char)c);
    input.close();

    System.out.println("Resp Code:"+con.getResponseCode());
    System.out.println("Resp Message:"+con.getResponseMessage());

遗憾的是,这种情况不起作用,并以此例外结束:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching app.elessy.cz found

这可能意味着它检查证书并发现我使用的证书与注册的域名不匹配(它是webhosting证书,注册为webhosting域,而不是我拥有的域名,唯一的原因我我使用https来保护数据用于内部目的,我不希望用户从外部访问此站点,因此该证书应该没问题。)

有两件事我不知道代码和所有内容。

  1. 没有代码我能找到使用MD5 / SHA-1(据说是用于邮件加密的公钥?)打印或 证书,他们只是以某种方式自动连接到https 网站,应该工作。虽然不适合我。
  2. 我真的需要提供给我的那些md5 / sha-1打印件吗?或者至少,在给定的上下文中那些印刷品是什么意思?
  3. 编辑:

    根据给定的答案和重复的标记,我设法使其工作 - 意思是我可以与https后面的应用程序进行通信。 但我没有必要使用任何类型的md5 / sha1打印。我怎么知道它现在安全了?这个协议是他自己的吗?就像这种通信以任何方式保护一样,当我使用内置的java类来连接到https后面的app?

    我可能不寻求精确的技术解释,但更多的是保证肯定 - 即使我不使用(知情)证书/服务器公钥来加密我的消息,通信也是安全的。它为我做了ssl连接。

0 个答案:

没有答案