I am pretty new to HTTP configuration. We are using Cloverleaf 6.1, will be upgrading to Cloverleaf version 6.2 pretty soon. We are running on AIX server. Within our organization we have done HTTP Client configurations previously without any issues. All the time we were provided with the Client certificate to be used when making the HTTPS call (sent by the vendor).
We never had to generate a KEY or a CSR request files for getting the certificate. But for the new HTTPS interface, the vendor asked me to generate the KEY file and a CSR (Client Signing Request) files, using which the vendor provided the Root Server Certificate and the Client Certificate.
The vendor only support TLSV1.2 protocol because of which I was forced to use Cloverleaf version 6.2 for my testing. We will be upgrading to Cloverleaf 6.2 before this project Go Live (so testing it in 6.2 version is not an issue).
I have configured the Cloverleaf thread in the following manner
Protocol: http-client
Encoding: UTF-8
URL: Headers: {Content-Type “text/xml; charset=utf-8”} {User-Agent “CIS”} Method: POST cURL Options: CURLOPT_SSL_VERIFYPEER set to 0 CURLOPT_VERBOSE set to 1 CURLOPT_SSL_VERIFYHOST set to 0 Driver Mode: Message Driven Query TPS: httpQuery with Args set to {MSGUSE DATA} HTTPS Configuration is done as follows Mode: ClientAuth SSL Protocol: All (assumption is it will resolve to TLSV1.2 during handshake) CA File: Certificate File: Private Key: This PFX file was generated using the following command using OpenSSL pkcs12 -export -out rhapsodyHSDP.pfx -inkey client.key -in client-certificate.crt Password: ****
When I start the thread, I can see it getting connected to the Web Service. But when I try to send the ADT data through this thread, I am getting an error stating 400 from HTTP server (No required SSL certificate was provided). I already confirmed it with my networks team that, there is no Firewall issue. Here is the details from the log file * Trying 52.2.245.229… * TCP_NODELAY set * Connected to rhapsody-poc-2030c.ibe.philips-healthsuite.com (52.2.245.229) port 7972 (#0) * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * NPN, negotiated HTTP1.1 * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 * ALPN, server did not agree to a protocol * Server certificate: * subject: C=US; ST=California; L=Foster City; O=Philips Healthcare Informatics, Inc; CN=*.ibe.philips-healthsuite.com * start date: May 5 00:00:00 2017 GMT * expire date: Jul 29 12:00:00 2020 GMT * issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA * SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway. > POST /share/emr/Encounter HTTP/1.1 Host: rhapsody-poc-2030c.ibe.philips-healthsuite.com:7972 User-Agent: CIS Accept: */* From: Connection: close Content-Type: text/xml; charset=utf-8 Content-Length: 224 * upload completely sent off: 224 out of 224 bytes < HTTP/1.1 400 Bad Request
< Server: nginx
< Date: Mon, 30 Oct 2017 14:59:46 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 246
< Connection: close
[http:read:DBUG/3:to_hfhs_Philips_LifeLine_adt:10/30/2017 10:59:46] Got response code: 400 from HTTP server
<
* Curl_http_done: called premature == 0
* Closing connection 0
[http:tps :DBUG/0:to_hfhs_Philips_LifeLine_adt:10/30/2017 10:59:46] Setting HTTP Result.
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:10/30/2017 10:59:46] HTTPResult: {STATUS {HTTP/1.1 400 Bad Request
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–] }} {HEADERS {Server: nginx
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–] Date: Mon, 30 Oct 2017 14:59:46 GMT
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–] Content-Type: text/html; charset=utf-8
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–] Content-Length: 246
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–] Connection: close
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–] }} {BODY { [http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–]
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–]
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–]
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–]
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–]
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–]
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–]
[http:tps :INFO/0:to_hfhs_Philips_LifeLine_adt:–/–/—- –:–:–] }}
[tcl :out :INFO/0:to_hfhs_Philips_LifeLine_adt:10/30/2017 10:59:46] (httpQuery/Run) Error fetching URL
My question:
Just because I generated the KEY and CSR file, should I need to add/import the KEY (using -importkeystore) and CERTificate (using -importcert) into the Keystore?
I tried to look for anything within the keystore currently using the keeytool -list command and I didnt see anything, so I am not sure if I need to add this to keystore since I generated the KEY & CSR file?
Any help in this regard would be appreciated.
Thanks in advance.
-Raj