有一个地址,其中一个是受信任的证书,没有。 我试图从没有可信证书的网址下载文件。 它从带有证书的网站下载得很好。
除非我处理此异常,否则程序将失败。在任何一种情况下,文件都不会被下载。
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");
}
}
答案 0 :(得分:0)
如果您不想(或不能)在信任库中添加证书,则需要实现允许所有证书的Trustmanager。然后它将接受任何,有效或无效。这是一个众所周知的主题,请看这里例如:Java and HTTPS url connection without downloading certificate