簡體   English   中英

如何建立與mail.google.com的單向SSL連接?

[英]How to establish a one way SSL connection to mail.google.com?

我正在嘗試通過java與mail.google.com建立單向SSL連接。 我認為mail.google.com與gmail相同,因此我使用此處提供的說明為gmail.com創建了證書。

我創建了如下證書:

$ openssl s_client -connect smtp.gmail.com:465

然后我復制了

-----BEGIN CERTIFICATE-----
...
...
-----END CERTIFICATE-----

部分放入名為“ gmail.cert”的文件中。

之后,我使用以下命令創建了自己的密鑰庫,並將密碼設置為“密碼”-

$ keytool -import -alias smtp.gmail.com -keystore simpleKS.jks -file gmail.cert

我使用了鏈接提供的Java代碼,並進行了一些小的修改:

    System.setProperty("javax.net.ssl.trustStore", "simpleKS.jks");
    System.setProperty("javax.net.ssl.trustStorePassword", "password");
    System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");

    //connect to google          
    SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
    SSLSocket sslSock = (SSLSocket) factory.createSocket("mail.google.com",443);

    System.out.println("Sending request...");         
    //send HTTP get request
    BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sslSock.getOutputStream(), "UTF8"));           
    wr.write("GET /mail HTTP/1.1\r\nhost: mail.google.com\r\n\r\n");
    wr.flush();

    System.out.println("Reading response...");

    // read response
    BufferedReader rd = new BufferedReader(new InputStreamReader(sslSock.getInputStream()));          
    String string = null;

    while ((string = rd.readLine()) != null) {
        System.out.println(string);
        System.out.flush();
    }

    rd.close();
    wr.close();
    // Close connection.
    sslSock.close();    

類文件和密鑰庫(以及所有其他文件)在同一目錄中,因此我很確定查找實際的密鑰庫文件不是問題。

但是,當我執行此代碼時,我得到

Sending request...
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我究竟做錯了什么?

猜猜這是因為每種使用的協議的證書有所不同, 請參閱 因此,您可能必須與openssl一起玩才能將證書轉換為用於其他協議。

您的錯誤消息表示相同,因為您僅為smtp.gmail.com提供了證書,所以找不到mail.google.com的證書。

(免責聲明我不是ssl專家,只是試圖指出希望正確的方向)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM