5
ฉันจะใช้ใบรับรองที่แตกต่างกันในการเชื่อมต่อที่เฉพาะเจาะจงได้อย่างไร
โมดูลที่ฉันเพิ่มลงในแอปพลิเคชัน Java ขนาดใหญ่ของเราจะต้องสนทนากับเว็บไซต์ที่ปลอดภัย SSL ของ บริษัท อื่น ปัญหาคือเว็บไซต์ใช้ใบรับรองที่ลงนามด้วยตนเอง ฉันมีสำเนาใบรับรองเพื่อตรวจสอบว่าฉันไม่ได้พบกับการโจมตีจากคนกลางและฉันจำเป็นต้องรวมใบรับรองนี้เข้ากับรหัสของเราในลักษณะที่การเชื่อมต่อกับเซิร์ฟเวอร์จะประสบความสำเร็จ นี่คือรหัสพื้นฐาน: void sendRequest(String dataPacket) { String urlStr = "https://host.example.com/"; URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setMethod("POST"); conn.setRequestProperty("Content-Length", data.length()); conn.setDoOutput(true); OutputStreamWriter o = new OutputStreamWriter(conn.getOutputStream()); o.write(data); o.flush(); } หากไม่มีการจัดการเพิ่มเติมสำหรับใบรับรองที่ลงชื่อด้วยตนเองสิ่งนี้จะตายที่ conn.getOutputStream () โดยมีข้อยกเว้นต่อไปนี้: Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX …
164
java
ssl
keystore
truststore
jsse