Resolving Jenkins Artifactory Plugin Upload Failures on AIX by Setting SSL_CERT_FILE and TLS Properties
This article details a two‑day troubleshooting process that identified missing SSL certificates and TLS configuration as the cause of Jenkins Artifactory plugin upload failures on AIX, and explains how setting the SSL_CERT_FILE environment variable and a JVM option restored successful artifact uploads.
The author describes a two‑day investigation into why the Jenkins Artifactory plugin failed to upload artifacts over HTTPS on IBM AIX, while the same operation worked on Windows, Linux and other Unix platforms.
After migrating from Artifactory OSS to Enterprise, the upload errors manifested as “A system call received a parameter that is not valid (Read failed)” for both GET and PUT requests. The root cause was the lack of a trusted SSL certificate on the AIX system.
Using curl to call the Artifactory REST API reproduced the failure, showing an “Unknown SSL protocol error”. Supplying the CA certificate with curl --cacert /var/ssl/cacert.pem succeeded and returned the Artifactory version JSON.
curl --cacert /var/ssl/cacert.pem https://artifactory.company.com/artifactory/api/system/version
{
"version" : "6.9.0",
"revision" : "60900900",
...
}To make Jenkins use the same certificate, the environment variable SSL_CERT_FILE was set to the path of cacert.pem :
set SSL_CERT_FILE=/var/ssl/cacert.pemHowever, the Jenkins agent runs a remote.jar process that does not inherit the host environment. The solution was to pass a JVM option that forces IBM’s JSSE to enable TLS 1.2, matching Oracle’s behavior:
-Dcom.ibm.jsse2.overrideDefaultTLS=trueAdding this option to the agent’s JVM settings, restarting the agent, and ensuring SSL_CERT_FILE is defined allowed the Jenkins pipeline to successfully upload artifacts to Artifactory on AIX.
The article concludes with reflections on the learning experience and advice to seek help from experienced colleagues when stuck.
Property value setting
Protocol enabled
false
TLS V1.0
true
TLS V1.0, V1.1, and V1.2
DevOps Engineer
DevOps engineer, Pythonista and FOSS contributor. Created cpp-linter, commit-check, etc.; contributed to PyPA.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.