นี่เป็นสถานการณ์ที่แปลกเล็กน้อย แต่ฉันหวังว่าจะมีคนที่นี่สามารถให้ความช่วยเหลือได้ ฉันมีแอปพลิเคชัน Java รุ่นเก่าที่สื่อสารกับ API บุคคลที่สามภายนอก (เครื่องมือออนไลน์ของ UPS) เราเพิ่งได้รับการแจ้งเตือนว่าเราจำเป็นต้องอัปเดตใบรับรองเซิร์ฟเวอร์ของเราภายในวันที่ 21 มกราคม มิฉะนั้นธุรกรรมของเราจะไม่ทำงานอีกต่อไป
แอปพลิเคชันของเรากำลังส่งคำขอ ssl ไปยัง API ภายนอกผ่านคำขอ curl (มันต้องเป็น curl เนื่องจากวิธีการออกแบบแอปพลิเคชันนี้ มันเป็นเรื่องยาวและไม่เกี่ยวข้องจริงๆ ที่นี่) สิ่งที่ฉันต้องรู้คือ ฉันต้องติดตั้งใบรับรองที่ไหน เรามีเว็บเซิร์ฟเวอร์ส่วนหน้า (Apache) แบ็กเอนด์ jboss และบริการ HAProxy ในระหว่างนั้น คำขอ curl ถูกสร้างขึ้นโดยแบ็กเอนด์ผ่านคลาส Groovy ที่รันคำสั่ง curl API ภายนอกใดที่กำลังมองหาใบรับรองเมื่อทำการจับมือ ssl
ในกรณีที่ช่วยได้ นี่คือลักษณะของวิธีการแบบ Groovy:
สตริงสาธารณะ[] requestTracking (สตริง url, การทำงานของสตริง, หมายเลขติดตามสตริง, หมายเลข access_license_number สตริง, user_id สตริง, รหัสผ่านสตริง) {
คำขอสตริง = """<?xml version="1.0"?>
<AccessRequest xml:lang="en-US">
<AccessLicenseNumber>${access_license_number}</AccessLicenseNumber>
<รหัสผู้ใช้>${user_id}</รหัสผู้ใช้>
<รหัสผ่าน>${รหัสผ่าน}</รหัสผ่าน>
</AccessRequest>
<?xml version="1.0"?>
<TrackRequest xml:lang="en-US">
<คำขอ>
<รายการอ้างอิง>
<CustomerContext>บริบทของฉัน</CustomerContext>
<XpciVersion>1.0001</XpciVersion>
</TransactionReference>
<RequestAction>ติดตาม</RequestAction>
<RequestOption>${action}</RequestOption>
</ขอ>
<ShipmentIdentificationNumber>${trackingNumber}</ShipmentIdentificationNumber>
</TrackRequest>
""";
คำสั่ง def = [
'ช',
'-ค',
"curl -s -w '%{http_code}' '${url}' -X POST -d '" + คำขอ + "'"
];
def proc = command.execute();
def outputStream = ใหม่ StringBuffer();
def errorStream = ใหม่ StringBuffer();
proc.waitForProcessOutput (outputStream, errorStream);
// System.out.println("ข้อผิดพลาด: " + errorStream.toString());
ผลลัพธ์ของสตริง = outputStream.toString().trim();
// แยกรหัสสถานะ html ออก
รหัสสตริง = result.substring (result.length () -3);
ตัวสตริง = result.substring(0,result.length() -3);
สตริง [] เอาต์พุต = [โค้ด, เนื้อหา];
ส่งคืนเอาต์พุต
}