ฉันพบปัญหาเล็กน้อยจากการเรียก API ของบุคคลที่สามจากแอปพลิเคชันจาวา API ภายนอกต้องการรหัสลับต่อไปนี้อย่างน้อยหนึ่งรหัส:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
ฉันทำตามคำแนะนำที่นี่: https://confluence.atlassian.com/stashkb/list-ciphers-used-by-jvm-679609085.html เพื่อพยายามอัปเกรดรหัสที่มีอยู่บนเซิร์ฟเวอร์แอปพลิเคชันของฉัน หลังจากการอัปเกรด แต่ฉันยังไม่เห็นรายการรหัสที่เข้ากันได้
ฉันสงสัยว่าปัญหาคือเซิร์ฟเวอร์ของฉันกำลังเรียกใช้ jdk 1.7 นี่เป็นแอปพลิเคชันรุ่นเก่า ดังนั้นน่าเสียดายที่ฉันไม่สามารถอัปเกรดเป็น jdk ที่ใหม่กว่าได้ มีวิธีใดในการเพิ่มรหัสลับเหล่านั้นในการติดตั้งจาวาที่มีอยู่ของฉัน?
อัปเดต:
ฉันรู้วิธีเพิ่มรหัสลับเพิ่มเติม แต่ดูเหมือนจะไม่ได้ช่วยอะไร ในโรงงานซ็อกเก็ตของฉันฉันได้เพิ่มโค้ดดังนี้:
ซ็อกเก็ตส่วนตัวยอมรับเฉพาะ TLS12 (ซ็อกเก็ตซ็อกเก็ต) {
ถ้า (!(อินสแตนซ์ของซ็อกเก็ต SSLSocket))
ซ็อกเก็ตกลับ
SSLSocket sslSocket = ซ็อกเก็ต (SSLSocket);
sslSocket.setEnabledProtocols (สตริงใหม่ [] { "TLSv1.2" });
รายการ<String> รหัส = ใหม่ ArrayList<String>(Arrays.asList(sslSocket.getEnabledCipherSuites()));
ciphers.add("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256");
sslSocket.setEnabledCipherSuites(ciphers.toArray(สตริงใหม่[] {}));
กลับ sslSocket;
}
มีขั้นตอนอื่นที่ฉันขาดหายไปหรือไม่? มีวิธีใดบ้างในการรับข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุที่การจับมือ ssl ล้มเหลว