Cloudlink 8.x Generating CSR from Cloudlink results in an error
Summary: Customer tried to generate a CSR from the Cloudlink web interface but it's failing with error: {"error":"invalid_request","error_description":"Map contained an null key or value."},
Symptoms
When attempting to generate a CSR from the cloudlink web interface it fails and gets the message:
{"error":"invalid_request","error_description":"Map contained an null key or value."},
The issue can occur when generating a CSR from the following locations:
SERVER > TLS > Generate CSR
KMIP SERVER > Information > Actions > Generate CA CSR
AGENTS > Agent Download > Actions > Generate CSR
CONTAINERS > Information > Actions > Generate CA CSR
Cause
The issue occurs when you use multiple words with spaces for the Organization(O) when generating a CSR in Cloudlink 8.x.
This issue didn't occur in Cloudlink 7.x
Resolution
There isn't an issue when using multiple words for Organization Unit(OU), City, or State.
In Cloudlink 8.x here are some example alternate names you could use for the Organization(O):
DELL
DELLTechnologies
DELL-Technologies-EMEA
DELL_Technologies_EMEA
DELLTechnologiesEMEA
Additional Information
Alternative Workarounds:
One workaround that would allow you to use multiple words for the Organization(O) would be to use the new certificate feature in Cloudlink 8.x in CERTIFICATE > Certificates > Generate CSR
This method will provide the customer with both the CSR and the private key. The benefit is that if you ever need to replace the node in the future you won't have to generate a new CSR as the key isn't embedded in the appliance and you'll already have the cert/key. The drawback is that now you'll have to keep track of both the certificate and the key.
Another option would be to Generate the CSR using RestAPI from the swaggerUI in ABOUT > Rest Documentation > Open Documentation Expand certificates : Certificates Management get /cloudlink/rest/certificates/webssl/csr
Make sure to turn on the Authorize button, enter secadmin credentials and check 'access all'.
Change Client credentials location from Authorization header to Request body
client_id and client_secret can be left blank.
Fill in the required fields, hit Execute and there will be a Download file button