Tôi đang đọc từ SSL Socket nhưng máy chủ không khớp với chứng chỉ (ví dụ: host = "localhost"
). Tôi sẽ mong đợi ngoại lệ nhưng mã sau đây vui vẻ nói chuyện với máy chủ từ xa mà không có bất kỳ vấn đề.SSLSocket bỏ qua miền không khớp
try (
final Socket socket = SSLSocketFactory.getDefault().createSocket(host, port);
final OutputStream os = socket.getOutputStream();
final InputStream is = socket.getInputStream()) {
os.write(("HEAD/HTTP/1.1\r\nHost: " + host + "\r\nConnection: close\r\n\r\n").getBytes());
os.flush();
final byte[] bytes = new byte[1024];
int n;
while ((n = is.read(bytes)) != -1) {
System.out.print(new String(bytes, 0, n));
}
System.out.println();
} catch (final IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Vì vậy, tôi đã cố gắng tiếp cận khác:
try {
final HttpURLConnection conn = (HttpURLConnection) new URL("https://" + host + ":" + port + "/").openConnection();
try (InputStream is = conn.getInputStream()) {
IOUtils.copy(is, System.out);
} catch (final IOException e1) {
try (InputStream es = conn.getErrorStream()) {
if (es != null) {
IOUtils.copy(es, System.out);
}
}
}
} catch (final IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Đáng tiếc là tôi vẫn nhận được không phải ngoại lệ SSL, chỉ WARN trong các bản ghi: 2013-07-31 16:02:27,182 WARN nio - javax.net.ssl.SSLException: Received fatal alert: certificate_unknown
Làm thế nào để có được ngoại lệ SSL nếu giấy chứng nhận không phù hợp?
Cảm ơn bạn đã cung cấp chi tiết. –