Steps to getting a certificate issued
In the Web UI, open the API Integrations section. There you'll find quick instructions on how to get a certificate issued. Here we'll go through the steps in more detail.
After performing the following steps an OAuth client with an automatically generated client_id will be created. The client_id will be used in the requests to get an access token. Multiple OAuth clients per account are not yet supported.
Generate a key pair and a CSR
On your own machine, generate a private key and a Certificate Signing Request:
- Windows
- macOS / Linux
Windows doesn't ship openssl. Install it once:
winget install FireDaemon.OpenSSL
Then generate the private key and CSR:
openssl ecparam -name prime256v1 -genkey -noout -out client.key
openssl req -new -key client.key -out client.csr -sha256 -subj "/"
openssl ecparam -name prime256v1 -genkey -noout -out client.key
openssl req -new -key client.key -out client.csr -sha256 -subj "/"
Your private key (client.key) never leaves your machine — only the CSR (client.csr) is uploaded.
A few things to note:
- Algorithm: Only ECDSA on the P-256 curve with SHA-256 is accepted. CSRs using RSA, Ed25519, or other ECDSA curves are rejected.
- Attributes: All CSR attributes and extensions are dropped; only the public key is carried over.
- Subject: The CN (or any other subject field) you put in the CSR is ignored — the server replaces the subject with the
client_idof the OAuth client.
Upload the CSR
In the API Integrations section, upload client.csr for signing. As this is a sensitive operation, you'll be asked to confirm it with your password.
Download the certificate
Once signed, download the issued certificate. The file is a bundle containing two certificates: your leaf certificate (valid for 1 year) followed by the Intermediate CA certificate that signed it. You'll be able to download it again from the Web UI.
You can inspect it with:
openssl x509 -in client.crt -noout -subject -issuer
# Expected output
# subject=CN={client_id}
# issuer=CN=TransferGo Production Intermediate CA1, O=TransferGo, C=LT
Use the bundle as-is together with your private key when establishing mTLS connections.
Next steps
- Exchange your certificate for a token.
- Certificates expire after 1 year. Rotate yours without downtime.