Certificate handling
Secure Sockets Layer (SSL) certificates are a security protocol that, when implemented, establishes a secure, encrypted connection between your point-of-sale (POS) system and the payment terminal in order for them to talk to each other.
This guide provides information on how your POS system handles certificates, specifically focusing on generating Certificate Signing Requests (CSRs), importing certificates, and installing trust certificates to the Payment Terminal Application. This ensures that the connection between your POS system and the payment terminal is protected against unauthorized access and data breaches.
Generate a Certificate Signing Request (CSR)
The following table contains the request fields used by the POS system to generate a certificate signing request (CSR) and send it to the Payment Terminal Application.
Parameter | Required | Data type | Value | Description |
---|---|---|---|---|
operation |
R |
String |
GenerateCsr |
The proxy app generates a new public and private key and uses the keys to generate a CSR (Certificate Signing Request). |
commonName |
R |
String |
Ex: "www.example.com" |
The fully-qualified domain name (FQDN) of the device. |
subjectAltNames |
O |
Array |
[ { "type": "dns", "value": "www. example.com" }, { "type": "ip", "value": "192.168.1.1" } |
The "SAN" or Subject Alternative Name(s) is an optional parameter that can be passed in with additional domains and/or IP addresses. This allows for a single certificate to be used to work with and secure multiple domains and/or subdomains. |
organization |
O |
String |
Ex: "ABC Corp" |
This field specifies the legal name of the organization that owns the certificate. It helps verify the identity of the entity requesting the certificate and ensures that the certificate is issued to a legitimate organization. |
organizational Unit |
O |
String |
Ex: "ABC Store" |
This field is used to specify a division or department within the organization. It can help further identify the specific part of the organization that is responsible for the certificate. |
country |
O |
String |
Ex: "US" |
Country code where the POS is located |
state |
O |
String |
Ex: "FL" |
State/Providence code where the POS is located |
locality |
O |
String |
Ex: "Tampa" |
City where the POS is located |
keyUse |
R |
String |
Ex: "replace" |
The 'keyuse' parameter defines the context in which the signed key will be used. 'replace': Intended to replace the current WSS certificate. 'rotate': Intended as a subsequent use certificate for when the current WSS certificate expires. Default: ‘replace’ |
The following table contains the response fields for generating a CSR.
Parameter | Data type | Value | Potential responses |
---|---|---|---|
operation | String | GenerateCsr | Same as request |
commonName | String | Ex: "www.example.com" | The fully-qualified domain name (FQDN) of the device. |
result | Int | Ex: 0 | 0: Generate CSR Success. 1: Error generating CSR 3: Invalid request, i.e. field missing. 5: Busy. CSR generation in progress. |
csr | String | Ex: ---- BEGIN CERTIFICATE REQUEST----- Base64 text ---- END CERTIFICATE REQUEST----- |
This is the data to be put in the device.csr file, the device.csr file will then be signed by your CA (Certificate Authority) and output a device cert for your specific device. |
Sample request:
{
"operation": "GenerateCsr",
"commonName": "www.example.com",
"organization": "JPMC",
"organizationalUnit": "omniTest",
"country": "US",
"state": "FL",
"locality": "Tampa",
"subjectAltNames": [
{
"type": "dns",
"value": "www2.example.com"
},
{
"type": "ip",
"value": "192.168.1.1"
}
],
"keyUse": "replace"
}
Sample response:
{
"operation": "GenerateCsr",
"commonName": "www.example.com",
"result": 0,
"csr": "-----BEGIN CERTIFICATE REQUEST-----Base64 text-----END CERTIFICATE REQUEST-----"
}
Import a certificate
The following table contains the request fields used by the POS system to import a certificate to the Payment Terminal Application.
Parameter |
Required |
Data type |
Value |
Description |
---|---|---|---|---|
operation |
R |
String |
ImportCertifi cate |
The operation name |
commonName |
R |
String |
Ex: "www. example. com" |
The fully-qualified domain name (FQDN) of the device. |
alias |
O |
String |
Ex: "SN1234567 890" |
The alias acts as an identifier, allowing you to reference and manage the specific certificate and its private key within the keystore. |
certificate |
R |
String |
Ex: "----- BEGIN CERTIFICA TE----- Encoded Base64 text ---- END CERTIFICA TE---- " |
CA Issued Certificate in Base64-encoded PEM (Privacy Enhanced Mail) format. The certificate starts with ----- BEGIN CERTIFICATE----- and ends with -----END CERTIFICATE--- , which is the standard PEM format. Between the header and footer the Base64-encoded data. |
keyUse |
R |
String |
Ex: "replace" |
The 'keyuse' parameter defines the context in which the signed key will be used. 'replace': Intended to replace the current WSS certificate. 'rotate': Intended as a subsequent use certificate for when the current WSS certificate expires. Default: ‘replace’ |
The following table contains the response fields for importing a certificate.
Parameter |
Data type |
Value |
Potential responses |
---|---|---|---|
operation |
String |
ImportCertificate |
The operation name |
alias |
String |
Ex: "SN1234567890" |
Ex: "SN1234567890" |
result |
Int |
Ex: 0 |
0: Store certificate success. 1: Error storing certificate in keystore. 3: Invalid request, i.e. field missing. 5: Busy. Certificate store in progress. |
Sample request:
{
"operation": "ImportCertificate",
"commonName": "www.example.com",
"certificate": "-----BEGIN CERTIFICATE-----Encoded Base64 text-----END CERTIFICATE",
"keyUse": "replace"
}
Sample response:
{
"operation": "ImportCertificate",
"alias": "SN1234567890",
"result": 0
}
Install a trust certificate
The following table contains the request fields used by the POS system to install a trust certificate to the Payment Terminal Application.
Parameter |
Required |
Data type |
Value |
Description |
---|---|---|---|---|
operation |
R |
String |
InstallTrustC ertificate |
This installs the root CA file to the truststore |
alias |
R |
String |
Ex: "deviceTrust Cert" |
The alias given to this trust certificate. Should be unique. |
certificate |
R |
String |
Ex: "----- BEGIN CERTIFICATE----- Encoded Base64 text ---- END CERTIFICATE---- " |
CA Issued Certificate in Base64-encoded PEM (Privacy Enhanced Mail) format. The certificate starts with ----- BEGIN CERTIFICATE----- and ends with -----END CERTIFICATE--- , which is the standard PEM format. Between the header and footer the Base64-encoded data. |
The following table contains the response fields for installing a trust certificate.
Parameter |
Data type |
Value |
Potential responses |
---|---|---|---|
operation |
String |
InstallTrustCertificate |
The operation name |
alias |
String |
Ex: "deviceTrustCert" |
The alias given to this trust certificate. Should be unique. |
result |
Int |
Ex: 0 |
0: Install certificate success. 1: Error storing certificate in key store. 3: Invalid request, i.e. field missing. 5: Busy. Certificate |
Sample request:
{
"operation": "InstallTrustCertificate",
"alias": "deviceTrustCert",
"certificate": "-----BEGIN CERTIFICATE-----Encoded Base64 text-----END CERTIFICATE"
}
Sample response:
{
"operation": "InstallTrustCertificate",
"alias": "deviceTrustCert",
"result": 0
}