คำถามติดแท็ก jsse

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 

8
ใบรับรองไคลเอ็นต์ Java ผ่าน HTTPS / SSL
ฉันใช้ Java 6 และกำลังพยายามสร้างHttpsURLConnectionกับเซิร์ฟเวอร์ระยะไกลโดยใช้ใบรับรองไคลเอ็นต์ เซิร์ฟเวอร์กำลังใช้ใบรับรองหลักที่ลงนามด้วยตนเองและกำหนดให้แสดงใบรับรองไคลเอ็นต์ที่ป้องกันด้วยรหัสผ่าน ฉันได้เพิ่มใบรับรองรูทเซิร์ฟเวอร์และใบรับรองไคลเอ็นต์ไปยังที่เก็บคีย์จาวาเริ่มต้นซึ่งฉันพบใน/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/security/cacerts(OSX 10.5) ชื่อของไฟล์ที่เก็บคีย์ดูเหมือนจะแนะนำว่าใบรับรองไคลเอ็นต์ไม่ควรอยู่ในนั้น? อย่างไรก็ตามการเพิ่มใบรับรองหลักในร้านค้านี้ช่วยแก้ปัญหาที่น่าอับอาย javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed' problem. อย่างไรก็ตามตอนนี้ฉันติดขัดเกี่ยวกับวิธีใช้ใบรับรองไคลเอ็นต์ ฉันได้ลองสองวิธีแล้วและไม่ทำให้ฉันไปไหนเลย อันดับแรกและที่ต้องการลอง: SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); URL url = new URL("https://somehost.dk:3049"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslsocketfactory); InputStream inputstream = conn.getInputStream(); // The last line fails, and gives: // javax.net.ssl.SSLHandshakeException: Received fatal alert: …

3
ประเภทที่เก็บคีย์: จะใช้อันไหนดี?
จากการดูไฟล์java.securityของฉันJREฉันเห็นว่าประเภทที่เก็บคีย์ที่จะใช้โดยค่าเริ่มต้นถูกตั้งค่าเป็นJKS. ที่นี่มีรายการประเภทที่เก็บคีย์ที่สามารถใช้ได้ มีประเภทที่เก็บคีย์ที่แนะนำหรือไม่? อะไรคือข้อดี / ข้อเสียของที่เก็บคีย์ประเภทต่างๆ
115 java  security  ssl  jsse 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.