TLS Enablement for IQ Service and VAs using Self Signed Certificate

Problem

In the latest release of IQService which is released on 1st July,2025, it has become mandatory for all partners which are using SailPoint ISC to provision the data in Active Directory to enable TLS so that AD Connector Rules are triggered as expected. In this article, you will find the high level steps of how to enable TLS for an IQ Service machine using Self Signed Certificate

Diagnosis

The IQ Service machine which was hosting this component did not had a trusted CA due to which it became necessary for us to use Self Signed Certificate instead of CA signed Certificates

Solution

The High Level Steps are as follows.

  1. Open the IQService Windows Machine.
  2. Open the Command Line.
  3. Navigate to the Folder Structure where the IQ Service is installed.
  4. Validate whether TLS Port is already enabled using command : IQService.exe -v
 IQService.exe -v
  1. Enable the TLS Port using command :
IQService.exe -o 5052
  1. Validate the TLS Port is Displayed or not using command.
IQService.exe -v
  1. In the details of IQ Service version, you will get the TLS enabled port number as well.

’’

  1. Restart the IQService using command as.
IQService.exe -t
  1. Testing connectivity from Vas to IQ Service TLS Port whether its opened or not using nc -zv -w 5 :Port command.
  2. Generate the Self Signed Certificate for your IQ Service Server if its on Local Domain.
<#
  .SYNOPSIS
  Generates self-signed TLS Certificate for IQService VMs FQDN.
.DESCRIPTION
    Generates a self-signed IQService TLS certificate for the machine FQDN
    - $validityPeriod 2 Years
    - Exportable 2048 RSA SHA256
    Imports to Personal & Trusted Root Certificates
    Exports TLS certificate without Private Key
.INPUTS
  None. You can't pipe objects to provision_TLS_IQService_FQDN.ps1.
.OUTPUTS
  provision_TLS_IQService_FQDN.ps1 exports generated TLS without Private Key.
.EXAMPLE
  PS> .\provision_TLS_IQService_FQDN.ps1
#>
######
# Set certificate validity period
$validityPeriod = 2
######
# Get the machine hostname
$hostname = “<HOSTNAME>”
# Generate a self-signed certificate
$cert = New-SelfSignedCertificate -DnsName $hostname -Subject "CN=$hostname" -CertStoreLocation "cert:\LocalMachine\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 -NotAfter (Get-Date).AddYears($validityPeriod)
# Copy the certificate to the Trusted Root Certificates store
$rootStore = New-Object System.Security.Cryptography.X509Certificates.X509Store "Root", "LocalMachine"
$rootStore.Open("ReadWrite")
$rootStore.Add($cert)
$rootStore.Close()
# Export the certificate without the private key
$certPath = ".\$hostname.cer"
Export-Certificate -Cert $cert -FilePath $certPath -Type CERT
Write-Host "Certificate generated and exported to $certPath"
  1. Import the Certificate into the Trusted Root Folder and Personal Folder of IQ Service Machine. Make sure that certificates are imported for LocalMachine and not for User.
  2. Execute the command on IQService
IQService.exe -m <FQDN_of_the_HOST>
  1. Enable TLS 1.2 for IQService.
IQservice.exe -j TLS1.2
  1. Restart the IQ Service Server
IQService.exe -t
  1. Import the new CER file/Certificate into /home/sailpoint/certificate folder of all Virtual Appliances present in the VA Cluster.

  2. Restart the CCG Service

sudo systemctl stop ccg
sudo systemctl start ccg
  1. Validate whether Certificate is generated and displayed on ccg-start.log by navigating to /home/sailpoint/log/ folder

  2. Change IQ Service Configurations on SailPoint ISC.

a. Enable TLS
b. Provide TLS Port
c. Change the IQServcieHost from IP to actual HostName/FQDN
d. Save the Configurations
  1. Test the Connections from SailPoint ISC and connection should be SUCCESS.
2 Likes

While this may work, it is very bad practice to set up an SSL connection with a self signed certificate, even in a dev/demo environment.

I would strongly recommend to setup your connection with proper CA certificates!

Thanks! Yes, but sometime we have seen that customers don’t have Trusted CA in place specially for Lower Environments (In case they have a custom domain which don’t have CA). For PROD, we have a Trusted CA. In those cases, the only way to do it is using Self Signed Certificate which is also recommended to us by SailPoint. Also, with the latest release of IQ Service on July-2025, they have made TLS enablement mandatory for triggering the AD Connector Rule Scripts. Hence, in case, you lower environments on which your IQ Service is hosted do not have Trusted CA in place, then, Self Signed Certificate usage is the only option or else a trusted CA has to be there.

Hi Rohit, I also have a requirement where there is no CA in the lower environment for AD so little option but to use the self-signed certificate to use TLS to configure the IQService.Your documentation for the AD connector does not suggest the use of self signed certificates, if the new requirement is to use TLS as mandatory surely the document should be updated to reflect this.

Additionally, the documentation is suggesting to use pem files as opposed to cer files per your post. Your post does not even suggest converting the cer file to a pem file and adding both the private key and certificate into the pem file to be placed in the home/sailpoint/certificates location.

The self signed certificate generated on the iqservice server has been placed in both the Trusted Root Folder and Personal Folder of IQ Service Machine (also one of DCs - not ideal but that’s what it is) However, using this approach I get the dreaded connection reset error even though in the ccg-start log the certificate has been imported fine. Certificate across all 3 nodes of my cluster have been imported successfully as I can see in ccg-start.log file.

Hello @nazatsse ,

Welcome to SailPoint Community!

Thanks for your comments.

Yes, the documentations has to be updated for sure by SailPoint. Note that we went into situation, we thought that as Self Signed Certificate is not explicitly mentioned in official documentations, we connected with out CSM who provided us some detailed insight and using that we implemented the above steps which I have documented in this Article.

You can use .cer, .crt or .pem file format for your Self Signed Certificates as soon as its sufficing all the requirements of how the certificate should be as per the SailPoint Documentations. Note that if your are creating the Self Signed Certificate, then, you can use the powershell script as provided by me in this article where you can just replace your hostname and that’s it. If you can try , use the powershell script provided by me to generate your self signed certificates.

Regards,

Rohit Wekhande.

Hi Rohit, I used your script to create the self sign cert and placed them on our va nodes (restarted ccg) but I am still getting the timeout error. He’s some of the entries from the IQServiceTrace log

08/18/2025 11:56:17 : ServiceMain [ Thread-1 ] INFO : “Listening on TLS Port: [5050]”
08/18/2025 11:56:17 : ServiceMain [ Thread-1 ] INFO : “Connection Read Timeout: [15]”
08/18/2025 11:56:17 : ServiceMain [ Thread-1 ] INFO : “TraceLevel: [3]”
08/18/2025 11:56:17 : ServiceMain [ Thread-1 ] INFO : “TraceFile: [C:\SailPoint\IQService\IQTrace.log]”
08/18/2025 11:56:17 : ServiceMain [ Thread-1 ] INFO : “Running As: [LocalSystem]”
08/18/2025 11:56:17 : ServiceMain [ Thread-1 ] INFO : “CommandLine Arguments”
08/18/2025 11:56:17 : ServiceMain [ Thread-1 ] INFO : “Argument[0] ==>‘-t’”
08/18/2025 11:56:17 : ServiceMain [ Thread-1 ] INFO : "ServiceName : IQService-Instance1

FYI port 5050 is reachable from the VA (test using nc command) could the .cer file be corrupted in transit?

5050 is i think default port for Non-TLS. I dont think you can use that. Apart from 5050, use something else, such as 5051 or 5052.

Also, validate the CERT whether its in OK state or not. It could be corrupted some how.

We can use port 5050 and that is what the IQService service is listening on.
The certificate running the command from the VA openssl s_client -connect :5050 shows it can establish a connection with the iqservice though further down the feedback returns this error: Verification error: self-signed certificate
AND
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1755591547
Timeout : 7200 (sec)
Verify return code: 18 (self-signed certificate)
Extended master secret: yes
AND
4027A2C9D17F0000:error:0A000126:SSL routines::unexpected eof while reading:../openssl-3.2.3/ssl/record/rec_layer_s3.c:689: