下载文件SSLHandshakeException

时间:2017-12-13 18:55:15

标签: java sslhandshakeexception downloadfile

有一个地址,其中一个是受信任的证书,没有。 我试图从没有可信证书的网址下载文件。 它从带有证书的网站下载得很好。

除非我处理此异常,否则程序将失败。在任何一种情况下,文件都不会被下载。

import javax.net.ssl.SSLHandshakeException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.nio.channels.ReadableByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.cert.CertificateException;



public class DownloadSomeFile {
    public static void main(String[] args) throws Exception {

        try {
            URL website = new URL("https://some.something.some.exe");
            ReadableByteChannel rbc;
            rbc = Channels.newChannel(website.openStream());
            File destination2 = new File("C:\\Testing\\Test.exe");
            FileOutputStream fos = new FileOutputStream(destination2);
            fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
            fos.close();
            rbc.close();
            System.out.println("some.exe has been downloaded");
//        } catch (IOException e) {
//            e.printStackTrace();
//        } catch (CertificateException ce){
//            ce.printStackTrace();
        } catch (SSLHandshakeException df) {
            System.out.println("SSL Exception");
        }

    }

1 个答案:

答案 0 :(得分:0)

如果您不想(或不能)在信任库中添加证书,则需要实现允许所有证书的Trustmanager。然后它将接受任何,有效或无效。这是一个众所周知的主题,请看这里例如:Java and HTTPS url connection without downloading certificate