Đây là một tình huống hơi kỳ lạ, nhưng tôi hy vọng ai đó ở đây có thể cung cấp một số trợ giúp. Tôi có một ứng dụng Java cũ giao tiếp với API bên thứ 3 bên ngoài (công cụ trực tuyến của UPS). Gần đây, chúng tôi đã nhận được thông báo rằng chúng tôi cần cập nhật chứng chỉ máy chủ của mình trước ngày 21 tháng 1, nếu không các giao dịch của chúng tôi sẽ không còn hoạt động.
Ứng dụng của chúng tôi đang gửi các yêu cầu ssl tới API bên ngoài thông qua một yêu cầu cuộn tròn (nó PHẢI bị cuộn tròn do cách ứng dụng này được thiết kế, đó là một câu chuyện dài và không thực sự liên quan ở đây). Điều tôi cần biết là tôi cần cài đặt chứng chỉ ở đâu? Chúng tôi có một máy chủ web giao diện người dùng (Apache), một chương trình phụ trợ jboss và một dịch vụ HAProxy ở giữa. Yêu cầu cuộn tròn đang được thực hiện bởi chương trình phụ trợ thông qua lớp Groovy thực thi lệnh cuộn tròn. Cái nào trong số đó là API bên ngoài đang tìm kiếm chứng chỉ khi thực hiện bắt tay ssl?
Trong trường hợp nó hữu ích, đây là giao diện của phương thức Groovy:
public String[] requestTracking(String url, String action, String trackingNumber, String access_license_number, String user_id, String password) {
Yêu cầu chuỗi = """<?xml version="1.0"?>
<AccessRequest xml:lang="en-US">
<AccessLicenseNumber>${access_license_number}</AccessLicenseNumber>
<UserId>${user_id}</UserId>
<Mật khẩu>${mật khẩu}</Password>
</Yêu cầu truy cập>
<?xml version="1.0"?>
<TrackRequest xml:lang="en-US">
<Yêu cầu>
<Tham khảo giao dịch>
<CustomerContext>Bối cảnh của tôi</CustomerContext>
<XpciVersion>1.0001</XpciVersion>
</TransactionReference>
<RequestAction>Theo dõi</RequestAction>
<RequestOption>${action}</RequestOption>
</Yêu cầu>
<ShipmentIdentificationNumber>${trackingNumber}</ShipmentIdentificationNumber>
</TrackRequest>
""";
lệnh def = [
'sh',
'-c',
"curl -s -w '%{http_code}' '${url}' -X POST -d '" + request + "'"
];
def proc = command.execute();
def outputStream = new StringBuffer();
def errorStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, errorStream);
// System.out.println("lỗi: " + errorStream.toString());
Kết quả chuỗi = outputStream.toString().trim();
//tách mã trạng thái html
Mã chuỗi = result.substring(result.length() -3);
Thân chuỗi = result.substring(0,result.length() -3);
Chuỗi [] đầu ra = [mã, nội dung];
trả về đầu ra;
}