Key Manager Plus APIs allow other applications to connect, interact and integrate with Key Manager Plus directly. These APIs belong to the REpresentational State Transfer category and allow applications to create, fetch, associate digital keys and add, retrieve or manage users programmatically.
The first step to configure and use KMP APIs is generating the API key from the KMP user interface. Only administrator users can generate the API keys. The API keys serve as the auth token for your access purposes. The API keys are tied to the host in which they are created.


To fetch resources, user accounts, keys, account/resource details
To delete an existing key or a certificate
To create new keys, certificates or to discover resources
The APIs can be via HTTP POST, GET and PUT requests. All parameters in the request should be form-url encoded. For all the APIs you need to pass AUTH token, which is mandatory.
The URL structure for the KMP API would be as below:
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/ <api_name> /AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8
KMP provides the following APIs:
To create a new SSH key
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The following data to be passed as input
{"operation":{"Details":{"keyName":"keytest",
"passPhrase":"passPhrase",
"comment":"comment",
"length":"2048",
"keyType":"ssh-rsa"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/createsshkey?INPUT_DATA={"operation":{"Details":{"keyName":"keytest","passPhrase":"passPhrase","comment":"comment","length":"2048","keyType":"ssh-rsa"}}}
{ "name": "CreateSSHKey",
"result": {
"status": "Success",
"message": "New SSH key created successfully" }
}
Note: Following are the key types that can be used to create new SSH keys:
To update credentials for the discovered resources.
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The following data to be passed as input
{"operation":{"Details":{"userName":"test3",
"password":"test3",
"resourceName":"172.21.147.80",
"isAdmin":"false"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/applycredentials?INPUT_DATA={"operation":{"Details":{"userName":"test3","password":"test3","resourceName":"172.21.147.80","isAdmin":"false"}}}
{
"name": "ApplyCredentials",
"result": {
"status": "Success",
"message": "Credentials updated successfully"
}
}
To fetch all the SSH resources.
GET
AUTHTOKEN=1604F2E1-2E31-4886-AA4E-DDBC9D3D189B
None
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getAllSSHResourceDetails
{
"result": {
"message": "All SSH Resources fetched successfully.",
"status": "Success"
},
"name": "GetAllSSHResources",
"details": [
{
"Path": "/home",
"Description": "NA",
"ResourceId": 1,
"ResourceName": "pmp-linux.keymanagerplus.com",
"Port": 22,
"CreationTime": "Apr 13, 2023 16:55",
"IPADDRESS": "172.XX.145.XXX",
"LandingServerName": "-"
},
{
"Path": "/home",
"Description": "NA",
"ResourceId": 2,
"ResourceName": "pmp-centos6.keymanagerplus.com",
"Port": 22,
"CreationTime": "Apr 18, 2023 12:13",
"IPADDRESS": "172.YY.YYY.2",
"LandingServerName": "testServer"
}
],
"totalRows": 2
}
To fetch all the discovered SSH keys
GET
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
None
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getAllSSHKeys
{"name": "GetAllSSHKeys",
"result": {"status": "Success","message": "All SSH Keys fetched successfully"
},"totalRows": 1,"details": [{"KeyName": "testkey","KeyType": "ssh-rsa",
"KeyLength": "2048","FingerPrint": "SHA256:v28/AlRYrpBKjAp4JoTRphLOkFdVb1ummVcyFHSfC5I",
"isPassphraseAvailable": false,"CreatedBy": "mm","CreationTime": "Today"}]}
To fetch a particular SSH keys from the discovered keys
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The name of the operation and key to be passed as input
{"operation":{"Details":{"keyName":"key"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getSSHKey?INPUT_DATA={"operation":{"Details":{"keyName":"key"}}}
{"name": "GetSSHKey",
"result": {"status": "Success","message": "SSH Key testkey fetched successfully"
}, "details": [{"KeyName": "testkey","KeyType": "ssh-rsa","KeyLength": "2048",
"FingerPrint": "SHA256:v28/AlRYrpBKjAp4JoTRphLOkFdVb1ummVcyFHSfC5I",
"isPassphraseAvailable": false,"CreatedBy": "mm","CreationTime": "Today"}]}
To export a particular SSH key
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The name of the operation and key to be passed as input
{"operation":{"Details":{"keyName":"key"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/exportSSHKey?INPUT_DATA={"operation":{"Details":{"keyName":"key"}}}
Key file
To get a passphrase of an SSH key
GET
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The name of the operation and key to be passed as input
{"operation":{"Details":{"keyName":"testKey"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getSSHKeyPassphrase?INPUT_DATA={"operation":{"Details":{"keyName":"testKey"}}}
{
"result": {
"message": "Passphrase fetched successfully"
"status": "Success"
},
"name": "GetSSHKeyPassphrase",
"details": {
"passphrase": "passphrase@321"
}
}
To export a particular SSH key as a specific Key Export Type(Public or Private).
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
Note: Specify 'public or 'private' in 'keyExportType' to indicate to fetch public or private key.
Key file
To get all the SSH keys associated with a particular user
GET
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The user name and resource name to be passed as input
{"operation":{"Details":{"userName":"test","resourceName":"172.21.147.80"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getSSHkeysforuser?INPUT_DATA={"operation":{"Details":{"userName":"test","resourceName":"172.21.147.80"}}}
{ "name": "GetSSHKeysForUser",
"result": {
"status": "Success","message": "SSH keys for user test of resource pmp-centos6 fetched successfully"
}, "details": "testkey,testkey1"}
To enumerate all users in a particular resource
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The user name and resource name to be passed as input
{"operation":{"Details":{"userName":"test","resourceName":"172.21.147.80"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/enumerateusers?INPUT_DATA={"operation":{"Details":{"userName":"test","resourceName":"172.21.147.80"}}}
{
"name": "EnumerateUsers",
"result": {
"status": "Success",
"message": "User enumeration started"
}
}
To get all the discovered SSH users
GET
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
None
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getAllSSHUsers
{
"name": "GetAllSSHUsers",
"result": {
"status": "Success",
"message": "All SSH Users fetched successfully"
},
"totalRows": 2,
"details": [
{
"UserName": "test",
"ResourceName": "172.21.147.80"
},{
"UserName": test1,
"ResourceName": "172.21.147.80"
}]}
To fetch all the users associated with SSH keys
GET
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
None
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getAllAssociatedUsers
"result": { "status": "Success","message": "All associated users fetched successfully"
}, "totalRows": 1,"details": [{ "UserName": "test","ResourceName": "pmp-centos6"}]}
Key Vault: Key Manager Plus provides a repository called Key Vault to securely store your digital keys. To fetch all the keys from the key vault
GET
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
None
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getAllKeyStoreKeys
{
"name": "getAllKeyStoreKeys",
"result": {
"status": "Success",
"message": "All KeyStore Keys fetched successfully"
},
"totalRows": 1,
"details": [
{
"Description": "test",
"Key Name": "cert.cer",
"Created Time": "Sep 27, 2016 12:27",
"Datacenter": "Central US",
"Instance Name": "test",
"Key Type": "test",
"Created By": "admin",
"Key Store ID": 1,
}]}
To export a particular key from the key vault
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The key name to be passed as input.
{"operation":{"Details":{"keyName":"cert.cer"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/exportKeyStoreKey?INPUT_DATA={"operation":{"Details":{"keyName":"cert.cer"}}}
Key file
To delete a key from the key vault
DELETE
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The key name to be passed as input.
{"operation":{"Details":{"keyName":"cert.cer"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/deleteKeyStoreKey?INPUT_DATA={"operation":{"Details":{"keyName":"cert.cer"}}}
{
"name": "DeleteKeyStoreKey",
"result": {
"status": "Success",
"message": "Key Store keys deleted successfully"
}
}
To add a new key to the key vault
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The following data to be passed as input.
{"operation":{"Details":{"keyName":"brin.cer",
"description":"test",
"datacenter":"test",
"passphrase":"test",
"keyType":"test",
"instanceName":"test"}}} -F File=@E:/certs/cert.cer
curl -X POST -k -H "AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE" -H 'Content-Type: multipart/form-data' -F INPUT_DATA={"operation":{"Details":{"keyName":"brin.cer","description":"test","datacenter":"test","passphrase":"test","keyType":"test","instanceName":"test"}}} -F File=@E:/certs/cert.cer https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/addKeyStoreKey
{"Status":"Success","Message":"Key added to key store successfully"}
To update a particular key vault key
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The following data to be passed as input.
{"operation":{"Details":{"keyName":"brin.cer",
"description":"test",
"datacenter":"test",
"passphrase":"test",
"keyType":"test",
"instanceName":"test"}}} -F File=@E:/certs/cert.cer
curl -X POST -k -H "AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE" -H 'Content-Type: multipart/form-data' -F INPUT_DATA={"operation":{"Details":{"keyName":"brin.cer","description":"test","datacenter":"test","passphrase":"test","keyType":"test","instanceName":"test"}}} -F File=@E:/certs/cert3.cer https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/updateKeyStoreKey
{"Status":"Success","Message":"Key Store key updated successfully"}
To obtain a certificate from KMP's certificate repository
GET
AUTHTOKEN=3E014D78-E603-413A-AC24-6392F0001283
The operation details and the name of the certificate fetched to be passed as input
{"operation":{"Details":{"common_name":"*.google.com","serial_number":"XXXXXXXXXXXXXX" }}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getCertificate?INPUT_DATA={"operation":{"Details":{"common_name":"*.google.com","serial_number":"XXXXXXXXXXXXXX"}}}
Certificate object
To fetch an intermediate certificate from KMP's certificate repository.
GET
AUTHTOKEN=3E014D78-E603-413A-AC24-6392F0001283
The operation details and the intermediate certificate detailed should be passed as input.
"INPUT_DATA={"operation":{"Details":{"common_name":"r5","serial_number":"ab279417","intermediate_issuer_dn":"r2","intermediate_serial_number":"d7fddd02"}}}"
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getIntermediateCertificate?INPUT_DATA={"operation":{"Details":{"common_name":"r5","serial_number":"ab279417","intermediate_issuer_dn":"r2","intermediate_serial_number":"d7fddd02"}}}"
Certificate object
To obtain a certificate from KMP's certificate repository in different file formats.
GET
AUTHTOKEN=3E014D78-E603-413A-AC24-6392F0001283
The operation details and the name of the certificate fetched to be passed as input
{"operation":{"Details":{"common_name":"certificate_common_name","serial_number":"certificate_serial_number,"fileType":"File format"}}}
Notes:
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getCertificate?INPUT_DATA={"operation":{"Details":{"common_name":"examplecert","serial_number":"182e967a976","fileType":"PEM"}}}
Certificate object
To obtain all certificates from KMP's certificate repository
GET
AUTHTOKEN=3E014D78-E603-413A-AC24-6392F0001283
{"operation":{"Details":{"withExpiryDaysLessThan":"500","withKeyLength":"1024","withSignatureAlgorithm":"SHA1","withPrivateKey":"true" }}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getAllSSLCertificates?INPUT_DATA={"operation":{"Details":{"withExpiryDaysLessThan":"500"}}}
(or)
https://Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getAllSSLCertificates?INPUT_DATA={"operation":{"Details":{"NotInCertificateGroup":"cg,wordpress","withExpiryDaysLessThan":"45","InCertificateGroup":"appleGp"}}}
Note: Including the Input Data in the API request is optional. In case input data is provided, you can add any one or all of the available filters: withExpiryDaysLessThan, withKeyLength, withSignatureAlgorithm, withPrivateKey, InCertificateGroup, NotInCertificateGroup. The InCertificateGroup and NotInCertificateGroup parameters are applicable from 7030 and multiple group names can be given in comma separated form.
{ "name": "GetAllSSLCertificates","result": { "status": "Success", "message": "All SSL Certificates fetched successfully"}, "totalRows": 2,"details": [{ "CertID": 1, "DNS Name/FQDN": "paytm.com", "Port": 443, "Common Name": "*.paytm.com", "Issuer": "GeoTrust Inc.", "FromDate": "Oct 13, 2015", "ExpiryDate": "Aug 27, 2017", "KeyStrength": "2048","SignatureAlgorithm": "SHA256withRSA","Created By": "admin","Expiry Notification Email": "","Description": "test"},{ "CertID": 302,"DNS Name/FQDN": "204.141.32.155","Port": 443, "Common Name": "*.zoho.com", "Issuer": "Sectigo Limited", "FromDate": "Jul 2, 2019", "ExpiryDate": "Apr 30, 2021", "KeyStrength": "2048","SignatureAlgorithm": "SHA256withRSA","Created By": "admin","Expiry Notification Email": "","Description": "test"}]}
To get the expiry dates of all the certificates
GET
AUTHTOKEN=1B2BF6FA-8511-47A8-867D-CE7FFE4BFBD0
INPUT_DATA:{"operation":{"Details":{"customExpiryDateFormat":"yyyy-MM-dd"}}}
Note: Applicable for builds 7040 and above
Providing a date format as input is optional. If specified, any valid date format can be used, and the output will display the expiry date in the same format alongside the dafault date format.
{
"result": {
"message": "Certificates expiry date fetched successfully",
"status": "Success"
},
"name": "GetAllSSLCertificatesExpiryDate",
"details": [
{
"ExpiryDate": "Oct 2, 2025",
"serialNumber": "9cf7a987ccd33ea4d27e0bab31c7c247",
"Common Name": "*.zoho.com",
"formattedExpiryDate": "2025-10-02"
},
{
"ExpiryDate": "Oct 18, 2025",
"serialNumber": "c745dcae53f59103beda2477ccce73a",
"Common Name": "*.wikipedia.org",
"formattedExpiryDate": "2025-10-18"
},
{
"ExpiryDate": "Aug 4, 2025",
"serialNumber": "65d68ea40d3bb74d128839b49c787f90",
"Common Name": "*.google.com",
"formattedExpiryDate": "2025-08-04"
}
],
"totalRows": 3
}
To get the details of a particular certificate
GET
AUTHTOKEN=3E014D78-E603-413A-AC24-6392F0001283
The operation details and the name of the certificate to passed as input
{"operation":{"Details":{"common_name":"*.google.com","serial_number":"xxxxxxxxxxxx"}}}
Note: It is optional to provide the serial number to fetch certificate details.
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getCertificateDetails?INPUT_DATA={"operation": {"Details":{"common_name":"*.google.com","serial_number":"xxxxxxxxxxxx"}}}
{ "name": "GetCertificateDetails", "result": { "status": "Success", "message": "Details of certificate *.zoho.com fetched successfully"
}, "details": [{ "certtype": "Domain", "certificateTemplate": "N/A", "endpoint": { "hostName": "*.zoho.com", "port": "443",
"expiry_date": "2021-04-30 05:29:59.0", "from_date": "2019-07-02 05:30:00.0", "certSignAlg": "SHA256withRSA",
"Sans": "*.zoho.com,zoho.com", "serial": "8c0b04e91a1796d86d1de5e89c8b3c5c",
"fingerPrint": "aeecb6227dc8adef18a8fb99465739996e2782a8", "keyalg": "RSA", "PublicKeyLength": 2048,
"PrivateKey": false, "isAWS": false}, "isCertInstalledMulipleServers": false, "issuer": {
"cname": "Sectigo RSA Domain Validation Secure Server CA", "org": "Sectigo Limited", "orgunit": "-"},
"issuedto": { "cname": "*.zoho.com", "org": "-", "orgunit": "Domain Control Validated"}, "intermediate": {},
"ipaddress": "204.141.32.155", "CertificateId": "302"}]}
To get the key store file of a particular certificate
GET
AUTHTOKEN=3E014D78-E603-413A-AC24-6392F0001283
The name of the operation and the common name of the keystore file to be passed as input
{"operation":{"Details":{"common_name":"apitest","serial_number":"XXXXXXXXXXXXXX" }}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getCertificateKeyStore?INPUT_DATA={"operation":{"Details":{"common_name":"apitest","serial_number":"XXXXXXXXXXXXXX"}}}
KeyStore File Object
To update an SSL certificate in the KMP repository.
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The operation name and the common name of the certificate to be passed as input
{"operation":{"Details":{"common_name":"apitest","serial_number":"XXXXXXe433d" ,"description":"testdescription","dns_name":"dnsname","email_address":"hooby@gmail.com","isAutoDeploy":"true","sslAdditionalFieldData":[{"ADDITIONALFIELDNAME":"Owner Name","ADDITIONALFIELDVALUE":"John"},{"ADDITIONALFIELDNAME":"dropdown","ADDITIONALFIELDVALUE":"option2"},{"ADDITIONALFIELDNAME":"Numeric","ADDITIONALFIELDVALUE":"678"},{"ADDITIONALFIELDNAME":"email","ADDITIONALFIELDVALUE":"mail@gmail.com"},{"ADDITIONALFIELDNAME":"date","ADDITIONALFIELDVALUE":"06/12/2022"}]}}}
https://<Hostname-of-the-KMP-server-OR-IP-Address>:<Port>/api/pki/restapi/updateSSLCertificateDetails?INPUT_DATA={"operation":{"Details":{"common_name":"apitest","serial_number":"XXXXXXe433d" ,"description":"testdescription","dns_name":"dnsname","email_address":"hooby@gmail.com","isAutoDeploy":"true","sslAdditionalFieldData":[{"ADDITIONALFIELDNAME":"Owner Name","ADDITIONALFIELDVALUE":"John"},{"ADDITIONALFIELDNAME":"dropdown","ADDITIONALFIELDVALUE":"option2"},{"ADDITIONALFIELDNAME":"Numeric","ADDITIONALFIELDVALUE":"678"},{"ADDITIONALFIELDNAME":"email","ADDITIONALFIELDVALUE":"mail@gmail.com"},{"ADDITIONALFIELDNAME":"date","ADDITIONALFIELDVALUE":"06/12/2022"}]}}}
{
"result": {
"message": "SSL Certificate apitest details updated successfully.",
"status": "Success"
},
"name": "updateSslDetails"
}
To delete an SSL certificate from the KMP repository.
DELETE
AUTHTOKEN=3E014D78-E603-413A-AC24-6392F0001283
The operation name and the common name of the certificate to be passed as input
{"operation": {"Details":{"common_name":"apitest","serial_number":"XXXXXXXXXXXXXX"}}}
The operation name and the common name of the certificate to be passed as input
{"operation": {"Details":{"common_name":"apitest","serial_number":"XXXXXXXccda","exclude_certificate":"true","reason":"Test"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/deleteCertificate?INPUT_DATA={"operation": {"Details":{"common_name":"apitest"}}}
https://<Hostname-of-KMP-Server-OR-IP-Address>:<Port>/api/pki/restapi/deleteCertificate?INPUT_DATA={"operation": {"Details":{"common_name":"apitest","serial_number":"XXXXXXXccda","exclude_certificate":"true","reason":"Test"}}}
{
"result": {
"message": "Certificate apitest deleted successfully.",
"status": "Success"
},
"name": "DeleteCertificate"
}
To discover a particular resource for SSL certificates
POST
AUTHTOKEN=3E014D78-E603-413A-AC24-6392F0001283
The name/IP address of the host and port number to be passed as input
{"operation":{"Details":{"HOST":"de-ubuntu10-1","TIMEOUT":"300","PORT":"6565"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/sslCertSingleDiscovery?INPUT_DATA={"operation":{"Details":{"HOST":"de-ubuntu10-1","TIMEOUT":"300","PORT":"6565"}}}
{"name": "Get SSL Discovery", "totalRows": 1,"details": {"zoho.com": ["SUCCESS", "SSL Certificate already available, *.zoho.com certificate found at port 443"]}}
To discover a set of resources for SSL certificates
POST
AUTHTOKEN=7EDC4ED5-E684-4413-9848-F0016C114874
The start and end IP addresses, port number and time-out to be passed as input
{"operation":{"Details":{"StartIpAddress":"192.168.216.0",
"EndIpAddress":"192.168.216.3",
"TIMEOUT":"3",
"PORT":"443"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/sslCertRangeDiscovery?INPUT_DATA={"operation":{"Details":{"StartIpAddress":"192.168.216.0","EndIpAddress":"192.168.216.3","TIMEOUT":"3","PORT":"443"}}}
{ "name": "Get SSL Discovery","totalRows": 4,"details": {
"192.168.216.1": ["FAILURE","Connection failed,no certificate found at port 443"],
"192.168.216.0": [ "FAILURE","Connection timed out,no certificate found at port 443"],
"192.168.216.2": ["FAILURE", "Connection timed out,no certificate found at port 443"],
"192.168.216.3": ["FAILURE","Connection timed out,no certificate found at port 443"]}}
To perform SSL discovery in bulk from files.
POST
AUTHTOKEN=A36ECFEF-7374-4DE2-B1A0-3EE719E3D2C7
INPUT_DATA:{"operation":{"Details":{"FileName":"sslDiscInputFile.txt","TIMEOUT":"3","PORT":443}}} File=@C:/path/to/file/sslDiscovery
File Content Format - IP address/Hostname<space>Port (By default the port will be in 443 and is an optional one)
For example:
0.0.0.0 6565
test-username-10 443
192.168.20.20 7272
example.com
curl -X POST -k -H "AUTHTOKEN:A36ECFEF-7374-4DE2-B1A0-3EE719E3D2C7" -H 'Content-Type: multipart/form-data' -F INPUT_DATA={"operation":{"Details":{"FileName":"sslDiscoveryInputFile.txt","TIMEOUT":"3","PORT":443}}} -F File=@C:/path/to/file/sslDiscoveryInputFile.txt https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/sslCertFileBasedDiscovery
{
"result": {
"message": "SSL discovery completed successfully",
"status": "Success"
},
"name": "Get SSL Discovery",
"details": {
"10.53.0.209": [
"FAILURE",
"Connection timed out,no certificate found at port 443"
],
"10.53.0.208": [
"FAILURE",
"Connection timed out,no certificate found at port 443"
],
"10.53.0.212": [
"FAILURE",
"Connection timed out,no certificate found at port 443"
]
},
"totalRows": 3
}
To create a certificate signing request
POST
AUTHTOKEN=C6506112-6113-42C9-AD3F-4A3AEF9476C9
The following data need to be passed as input.
{
"operation": {
"Details": {
"CNAME": "kmptestcert",
"ALT_NAMES": "testcert",
"ORGUNIT": "ManageEngine",
"ORG": "Zoho",
"LOCATION": "Krisp",
"STATE": "TamilNadu",
"COUNTRY": "IN",
"PASSWORD": "##########",
"VALIDITY_TYPE": "days",
"VALIDITY": "90,
"ALG": "RSA",
"LEN": "4096",
"SIGALG": "SHA256",
"StoreType": "PKCS12",
"CSR_EMAIL":"kmpadmin@adventnet.com"
}
}
}
Notes: Validity type can be days, hours or minutes. CSR_EMAIL field is optional.
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/createCSR?INPUT_DATA={"operation":{"Details":{"CNAME":"mytestcert","ALT_NAMES":"test","ORGUNIT":
"hhh","ORG":"h","LOCATION":"hh","STATE":"h","COUNTRY":"hh","PASSWORD":"bbbbbbbb",
"VALIDITY_TYPE":"88","VALIDITY":"888","ALG":"RSA","LEN":"4096","SIGALG":"SHA256",
"StoreType":"PKCS12"}}}
{"name":"CreateCertificate","result":{"status":"Success","message":"CSR saved successfully"}}
To get CSR list
GET
AUTHTOKEN=7930AD60-B2F6-4CAA-90E5-779EDF229615
None
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getCSRList
{"name": "GetCSRList",
"result": {
"status": "Success",
"message": "Fetched all CSRs successfully"
},
"totalRows": 1,
"GeneratedList": [
{"CREATED_BY": "admin",
"KEYALGORITHM": "RSA",
"KEYSTORE_TYPE": "JKS",
"isPassword": true,
"CSR_ID": 1,
"CREATED_DATE": "May 15, 2020 19:51",
"KEY_STRENGTH": 2048,
"DOMAIN_NAME": "testcsr",
"VALIDITY": "30",
"SIGNATURE_ALGORITHM": "SHA256withRSA"
}]}
To import the list of CSRs available in the request list.
https://<<KMPaddress>>:<PORT>/api/pki/restapi/importCSR
POST
AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8
INPUT_DATA={"operation":{"Details":{"password":"Test@123","Email":"test@mail.com"}}}
Note: It is optional to provide the Key File. If the Key File is provided, the Password field is mandatory.
curl -X POST -k -H 'AUTHTOKEN:A3164150-4C15-4AA4-918E-F258F38149F8' 'https://Host-Name-of-the-KMP-Server:Port/api/pki/restapi/importCSR' -F 'CSR=@"/home/downloads/test.csr"' -F 'Key=@"/home/downloads/test.keystore"' -F 'INPUT_DATA={"operation":{"Details":{"password":"Test@123","Email":"kmp-server@manageengine.com"}}}'
{
"result": {
"message": "CSR demo.test.com imported successfully.",
"status": "Success"
},
"name": "importCSR"
}
To sign CSR
POST
AUTHTOKEN=7930AD60-B2F6-4CAA-90E5-779EDF229615
INPUT_DATA={"operation":{"Details":{"serverName":"kmp-w12r2-1","caName":"kmp-w12r2-1-ca","templateName":"DomainController","CSR_ID":"1"}}}
(or)
INPUT_DATA={"operation":{"Details":{"signType":"signWithRoot","rootCertificateCommonName":"testroot","rootCertificateSerialNumber":"1879376424c","Validity":100,"isIntermediate":"true","CSR_ID":"301"}}}
(or)
INPUT_DATA={"operation":{"Details":{"signType":"MSCAusingAgent","serverName":"test-w16-1","caName":"test-W16-1-CA","templateName":"WebServer","agentName":"test-w16-1","agentResponseTimeout":90,"CSR_ID":"1"}}}
Note: The 'signType' can be 'MSCA', 'MSCAusingAgent' or 'signWithRoot'. The sign type 'MSCAusingAgent' is applicable from 7030 and by default, the 'signType' will be taken as 'MSCA'.
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/signCSR
{
"result": {
"message": "Certificate csr successfully signed with test.",
"status": "Success"
},
"name": "SignCSR",
"details": [
{
"commonName": "test",
"Certificate_ID": 3301,
"serialNumber": "bd865c93"
}
]
}
To export a CSR from the Key Manager Plus repository.
GET
AUTHTOKEN=1604F2E1-2E31-4886-AA4E-DDBC9D3D189B
{"operation":{"Details":{"CSR_ID":"304","fileType":"CSR"}}}
Note: The file type can be CSR, PrivateKey or KeyStore.
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/exportCSR?INPUT_DATA={"operation":{"Details":{"CSR_ID":"304","fileType":"CSR"}}}
File Content
To create an SSL certificate
POST
AUTHTOKEN=C6506112-6113-42C9-AD3F-4A3AEF9476C9
The following data to be passed as input.
{
"operation": {
"Details": {
"CNAME": "kmptestcert",
"ALT_NAMES": "testcert",
"ORGUNIT": "ManageEngine",
"ORG": "Zoho",
"LOCATION": "Krisp",
"STATE": "TamilNadu",
"COUNTRY": "IN",
"PASSWORD": "##########",
"VALIDITY_TYPE": "days",
"VALIDITY": "90,
"ALG": "RSA",
"LEN": "4096",
"SIGALG": "SHA256",
"StoreType": "PKCS12",
"CSR_EMAIL":"kmpadmin@adventnet.com"
}
}
}
Note: Validity type can be days, hours or minutes. CSR_EMAIL field is optional.
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/createCertificate?INPUT_DATA={"operation":{"Details":{"CNAME":"mytestcert","ALT_NAMES":"test","ORGUNIT":
"hhh","ORG":"h","LOCATION":"hh","STATE":"h",
"COUNTRY":"hh",
"PASSWORD":"bbbbbbbb","VALIDITY_TYPE":"88",
"VALIDITY":"888","ALG":"RSA","LEN":"4096","SIGALG":"SHA256","StoreType":"PKCS12"}}}
{
"result": {"message": "Certificate saved successfully","status": "Success"},
"name": "CreateCertificate",
"details": [
{
"SSL_RESOURCEID": 3
}
],
"totalRows": 1
}
To import a SSH key
POST
AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8
The following data to be passed as input.
{"operation":{"Details":{"keyName":"testkey","passphrase":"passtrix"}}}
curl -X POST -k -H "AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8" -H 'Content-Type: multipart/form-data' -F INPUT_DATA={"operation":{"Details":{"keyName":"testkey","passphrase":"passtrix" }}} -F File=@D:/certs/keys/test1-passtrix/test1_Jul-21-2017-15_56.key
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/addSSHKey
{"name":"addSSHKey","result":{"status":"SUCCESS","message":"Key imported successfully"}}
To associate a SSH key
POST
AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8
The following data to be passed as input.
{"operation":{"Details":{"keyName":"testkey","resourceName":"test.csez.zohocorpi
n.com","userName":"test"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/associateKey?INPUT_DATA={"operation":{"Details":{"keyName":"te
stkey","resourceName":"test.csez.zohocorpin.com","userName":"test"}}}
{"name": "associateKey",
"result": {
"status": "Success",
"message": "Key associated successfully "}}
To dissociate a SSH key
POST
AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8
The following data to be passed as input.
{"operation":{"Details":{"keyName":"testkey","resourceName":"test.csez.zohocorpi
n.com","userName":"test"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/dissociateKey?INPUT_DATA={"operation":{"Details":{"keyName":"te
stkey","resourceName":"test.csez.zohocorpin.com","userName":"test"}}}
{"name": "dissociateKey",
"result": {
"status": "SUCCESS",
"message": "Key dissociated successfully."}}
To add an SSL certificate to Key Manager Plus certificate repository.
https://<Host-Name-of-KMP-Server OR IP
address>:6565/api/pki/restapi/addCertificate
POST
AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8
The following data to be passed as input.
input data: {"operation":{"Details":{"fileType":"KEYSTORE","PASSWORD":"PASSWORD"}}}
Note: The fileType specified in the input data can be either CERTFILE or KEYSTORE. For CERTFILE fileType, the PASSWORD field need not be specified.
curl -X POST -k -H "AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8" -H 'Content-Type: multipart/form-data' -F INPUT_DATA={"operation":{"Details":{"fileType":"KEYSTORE","PASSWORD":"PASSWORD"}}} -F File=@D:/certs/newcert.keystore https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/addCertificate
{"name": "AddCertificate",
"result":
{{"Status":"Success",
"Message": "Certificate newcert.com added successfully"}}}
To Deploy SSL Certificate.
POST
AUTHTOKEN:75408B31-EC01-4494-BCBC-48DC5F39920F
INPUT_DATA={"operation":{"Details":{"common_name":"testcert","serial_number":"xxxxxxxx","serverName":"testmachine"}}}
Note: It is optional to provide the server name. The server name allows you to deploy certificates to that particular server. Without the server name, the certificates are deployed to all the saved servers from the client.
https://127.0.0.1:6565/api/pki/restapi/deployCertificate
{"result": {
"message": "Certificate deployment is successful.",
"status": "Success"
},
"name": "DeployCertificate",
"totalRows": 1,
"deployStatus": [
{
"server": "testmachine",
"message": "Certificate testcert of format CER and PFX deployed in testmachine successfully.",
"status": "Success"
}]}
To delete a particular SSH key.
https://< Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/deleteSSHKey
DELETE
AUTHTOKEN=A3164150-4C15-4AA4-918E-F258F38149F8
The following data to be passed as input.
{"operation":{"Details":{"key_name":"newkey1","withoutDisassociation":"true"}}}
https://< Host-Name-of-KMP-Server OR IP address
>:6565/api/pki/restapi/deleteSSHKey?INPUT_DATA={"operation":{"Details":{"key_name":"newkey1","withoutDisassociation":"true"}}}
{ "name": "DeleteSSHKey",
"result": { "status": "Success",
"message": "SSH keys newkey1 deleted successfully"}}
To get the passphrase of a certificate private key
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getCertificatePassphrase
GET
AUTHTOKEN=894241B8-C361-4E30-B467-0AF9AAA00011
The following data is to be passed as input:
{"operation":{"Details":{"common_name":"mycert","serial_number":"XXXXXXXXXXXXXX"}}}
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getCertificatePassphrase?INPUT_DATA={"operation":{"Details":{"common_name":"mycert","serial_number":"XXXXXXXXXXXXXX"}}}
{
"result": {
"message": "Private key passphrase of certificate mycert is fetched",
"status": "Success"
},
"name": "GetCertificatePassphrase",
"details": {
"Passphrase": "SamplePassphrase"
}
}
To fetch PGP Keys
GET
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
The following data is to be passed as input:
Notes:
Specify 'public or 'private' in 'keyExportType' to indicate to fetch public or private key.
If you are using special characters in the key "User", kindly escape them using the backslash.
Key file
To get all the audit details.
GET
AUTHTOKEN=068E1EC1-9587-4CA5-A284-02A6200F0032
None
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getAuditDetails
{
"result": {
"message": "All Audit data fetched successfully.",
"status": "Success"
},
"name": "GetAllAudits",
"details": [
{
"OPERATION": "REST API",
"DESCRIPTION": "All Audit data fetched successfully.",
"AUDITID": 902,
"USERNAME": "admin",
"TIME": "Apr 18, 2023 13:25"
}
],
"totalRows": 1
}
To get the total number of SSL vulnerabilities.
GET
AUTHTOKEN=A36ECFEF-7374-4DE2-B1A0-3EE719E3D2C7
None
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getSSLVulnerabilityCount
{
"result": {
"message": "SSL vulnerability data fetched successfully.",
"status": "Success"
},
"name": "GetSSLVulnerabilityCount",
"details": {
"SSLVulnerabilityCount": {
"Weak Cipher Suites": 0,
"Poodle SSL": 0,
"Revoked": 0,
"SSLv3 Enabled": 0,
"No TLS1.2": 1,
"Heartbleed": 0
}
}
}
To revoke a MSCA certificate.
POST
AUTHTOKEN=1604F2E1-2E31-4886-AA4E-DDBC9D3D189B
None
https:<//Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/revokeMSCACertificate?INPUT_DATA={"operation":{"Details":{"common_name":"test3","serial_number":"12345","revoke_reason":1}}}
Note: Provide the revoke_ reason attribute accordingly as specified below.
0 - Unspecified, 1 - Key compromise, 2 - Certificate Authority compromise, 3 - Affiliation changed, 4 - Superseded, 5 - Cessation of operation, 6 - Certificate hold, 7 - Remove from CRL
Certificate manageengine.com revoked successfully with reason Certificate hold.
To fetch the discovered and unmanaged certificates of format JKS/PKCS from a load balancer or shared path.
GET
AUTHTOKEN=1604F2E1-2E31-4886-AA4E-DDBC9D3D189B
{"operation":{"Details":{"type":"loadbalancer"}}}
Note: 'type' can be 'loadbalancer' or 'sharedpath' as required.
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/getUnmanagedCertList?INPUT_DATA={"operation":{"Details":{"type":"loadbalancer"}}}
Note: 'type' can be 'loadbalancer' or 'sharedpath'.
{
"result": {
"message": "Data fetched from the repository",
"status": "Success"
},
"name": "getUnmanagedCertList",
"details": [
{
"Certificate.keystore::2": "ENTER_THE_PASSWORD",
"www.managengine.com.keystore::8": "ENTER_THE_PASSWORD",
"Certificate.jks::1": "ENTER_THE_PASSWORD",
"www.chrometest.com_04_13_9_57_06.pfx::7": "ENTER_THE_PASSWORD",
"success.pfx::5": "ENTER_THE_PASSWORD",
"zs.com_May-17-2021-11_14.pfx::9": "ENTER_THE_PASSWORD",
"secret.keystore::4": "ENTER_THE_PASSWORD",
"test.pfx::6": "ENTER_THE_PASSWORD",
"des.EcSN9OIoOFuCQa8Tg.com.keystore::3": "ENTER_THE_PASSWORD"
}
],
"totalRows": 9
}
Note: Enter the respective certificate's password and save the response as a .txt file in the below format.
{
"Certificate.keystore::2": "Qx@7rF2uPv",
"www.managengine.com.keystore::8": "Y9g#kL4sZ",
"Certificate.jks::1": "H3&bN8wXp",
"www.chrometest.com_04_13_9_57_06.pfx::7": "A1z%vD6fR",
"success.pfx::5": "P7m*C2oLq",
"zs.com_May-17-2021-11_14.pfx::9": "W5@hU9sKt",
"secret.keystore::4": "F4g%B6nYl",
"test.pfx::6": "X8d#jM6oZ",
"des.EcSN9OIoOFuCQa8Tg.com.keystore::3": "V2p!tR7sH"
}
To import the unmanaged certificates of format JKS/PKCS fetched from a load balancer or shared path into the Key Manager Plus.
GET
AUTHTOKEN=1604F2E1-2E31-4886-AA4E-DDBC9D3D189B
The .txt file saved with the fetched data from the API - Fetch Unmanaged Certificates (.keystore/.pfx) from a Load Balancer or Shared Path is to be uploaded here as input data.
https://<Host-Name-of-KMP-Server OR IP address>:6565/api/pki/restapi/discoverUnmanagedCert
{
"Status": "Success",
"Message": "All certificates were imported successfully.",
"ImportedCertificate": [
"Certificate.keystore",
"www.manageengine.com.keystore",
"Certificate.jks",
"www.chrometest.com_04_13_9_57_06.pfx",
"success.pfx",
"zs.com_May-17-2021-11_14.pfx",
"secret.keystore",
"teste.pfx",
"demo.EcSN9OIoOFuCQa8Tg.com.keystore"
]
}
To update the existing additional fields associated with an SSL certificate stored in the Key Manager Plus repository.
https://<Host-Name-Of-KMP-Server OR IP-Address>:6565/api/pki/restapi/updateSSLAdditionalFields
POST
AUTHTOKEN=99AE42A9-02E0-4638-888A-D4D19225C3FE
{"operation":{"Details":{"common_name":"mycert","serial_number":"fe1d1392618ae70c1065902a55d041ad" ,"sslAdditionalFieldData":[{"ADDITIONALFIELDNAME":"Owner Name","ADDITIONALFIELDVALUE":"John"},{"ADDITIONALFIELDNAME":"dropdown","ADDITIONALFIELDVALUE":"option2"},{"ADDITIONALFIELDNAME":"Numeric","ADDITIONALFIELDVALUE":"678"},{"ADDITIONALFIELDNAME":"email","ADDITIONALFIELDVALUE":"mail@gmail.com"},{"ADDITIONALFIELDNAME":"date","ADDITIONALFIELDVALUE":"06/12/2022"}]}}}
https://<Host-Name-Of-KMP-Server OR IP-Address>:6565/api/pki/restapi/updateSSLAdditionalFields?INPUT_DATA={"operation":{"Details":{"common_name":"mycert","serial_number":"fe1d1392618ae70c1065902a55d041ad" ,"sslAdditionalFieldData":[{"ADDITIONALFIELDNAME":"Owner Name","ADDITIONALFIELDVALUE":"John"},{"ADDITIONALFIELDNAME":"dropdown","ADDITIONALFIELDVALUE":"option2"},{"ADDITIONALFIELDNAME":"Numeric","ADDITIONALFIELDVALUE":"678"},{"ADDITIONALFIELDNAME":"email","ADDITIONALFIELDVALUE":"mail@gmail.com"},{"ADDITIONALFIELDNAME":"date","ADDITIONALFIELDVALUE":"06/12/2022"}]}}}
{
"result": {
"message": "Additional field details updated successfully for mycert",
"status": "Success"
},
"name": "updateSSLAdditionalFields"
}