Aceasta este o situație puțin ciudată, dar sper că cineva de aici poate oferi ajutor. Am o aplicație Java moștenită care comunică cu un API extern terță parte (instrumente online UPS). Am primit recent o notificare că trebuie să ne actualizăm certificatul de server până pe 21 ianuarie, altfel tranzacțiile noastre nu vor mai funcționa.
Aplicația noastră trimite solicitări ssl către API-ul extern printr-o cerere curl (TREBE să fie curl datorită modului în care este proiectată această aplicație, este o poveste lungă și nu este cu adevărat relevantă aici). Ceea ce trebuie să știu este, unde trebuie să instalez certificatul? Avem un server web front-end (Apache), un backend jboss și un serviciu HAProxy între ele. Solicitarea curl este făcută de backend printr-o clasă groovy care execută o comandă curl. Pe care dintre acestea caută API-ul extern un certificat atunci când face o strângere de mână ssl?
În cazul în care vă ajută, iată cum arată metoda groovy:
public String[] requestTracking(String URL, String action, String trackingNumber, String access_license_number, String user_id, String parola) {
Solicitare șir = """<?xml version="1.0"?>
<AccessRequest xml:lang="en-US">
<AccessLicenseNumber>${access_license_number}</AccessLicenseNumber>
<UserId>${user_id}</UserId>
<Parolă>${parolă}</Parolă>
</AccessRequest>
<?xml version="1.0"?>
<TrackRequest xml:lang="en-US">
<Solicitare>
<TransactionReference>
<CustomerContext>Contextul meu</CustomerContext>
<XpciVersion>1.0001</XpciVersion>
</TransactionReference>
<RequestAction>Urmărire</RequestAction>
<RequestOption>${action}</RequestOption>
</Solicitare>
<ShipmentIdentificationNumber>${trackingNumber}</ShipmentIdentificationNumber>
</TrackRequest>
""";
comanda def = [
'SH',
'-c',
"curl -s -w '%{http_code}' '${url}' -X POST -d '" + cerere + "'"
];
def proc = command.execute();
def outputStream = new StringBuffer();
def errorStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, errorStream);
// System.out.println("eroare: " + errorStream.toString());
Rezultat șir = outputStream.toString().trim();
//divizează codul de stare html
Cod șir = result.substring(result.length() -3);
Corpul șirului = rezultat.substring(0,result.length() -3);
String[] output = [cod, corp];
ieșire returnată;
}