Salesforce

How to import an SSL certificate obtained from a Certificate Authority (CA) into OpenEdge

« Go Back

Information

 
TitleHow to import an SSL certificate obtained from a Certificate Authority (CA) into OpenEdge
URL Name000028533
Article Number000162387
EnvironmentProduct: OpenEdge
Version: 10.x, 11.x, 12.x
OS: All supported platforms
Question/Problem Description
How to import an SSL certificate obtained from a Certificate Authority (CA) into OpenEdge
How to request a certificate from a CA and import it into the OpenEdge certificate store
How to import a SSL certificate into OpenEdge received from an external source?
How to import a SSL certificate into OpenEdge received from Go Daddy or another CA?
Can I use the private and public key received from a CA to request an SSL certificate?
Where can I get the Public and Private key for SSL certificate to be used with OpenEdge ssl enabled Servers ?
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution
Obtaining and importing an external certificate from a third party Certificate Authority (CA) requires the use of OpenEdge utilities:
  1. PKIUTIL - to generate private and public keys, then import the certificate into the keystore for servers
  2. CERTUTIL - to import the new certificates for clients
1. Generate private and public keys using PKIUTIL 

This step creates two files:
  • A private key (.pk1) 
  • The public key (.pk10) to be submitted to the CA.
Example: Create a 512-bit, 1024-bit or 2048-bit private key, the default keysize is 1024-bit. 
           
proenv>pkiutil -keysize 2048 -newreq X

Output similar to the following is displayed: Take a note of the pass phrase as it is required in the next steps.
    
Loading 'screen' into random state - done
Generating a 2048 bit RSA private key
..+++
......................+++
writing new private key to 'C:\dlc\keys\requests\X.pk1'

Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

PKUTIL will then prompt for specific information to be incorporated in the certificate request. 
  • The first piece of information is called a Distinguished Name or a DN
  • Some fields can be left blank, or use the default value. 
  • If a single period '.' is entered on these fields the field will be left blank:
 
Country Name (2 letter code) [US]:US
State or Province Name (full name) []:Massachusetts
Locality Name (eg, city) []:Bedford
Organization Name (eg, company) []:Progress Software
Organizational Unit Name (eg, section) []:Technical Support
Server DNS name []:bedford.progress.com

Two files are created, the private key with the .pk1 extension and the file with a .pk10 extension is the public key

Since OpenEdge 11.6.2, 11.7.0 support for a private key in PKCS#8 format is provided:
2.   Submit the public key to the Certificate Authority (CA) when requesting the certificate (.cer or .crt).
In this example, the file used to request a new digital certificate from the (CA):
'C:\dlc\keys\requests\keys\requests\X.pk10
 
3.   Use PKIUTIL to import the certificate into the keystore when the new certificate is received from your Certificate Authority (CA)
proenv>pkiutil -import X %DLC%\keys\requests\X.cer

Output similar to the following will be displayed:
Importing private key alias X:
Importing certificate file 'C:\dlc\keys\requests\X.cer

One file will be imported to DLC\keys, a Privacy Enhanced Mail with a .pem extension. The PEM file is a Base64 encoded (typically DER formatted) certificate. PEM certificates can easily be translated into readable data using a simple text editor. Opening this PEM encoded file in a text editor will show it's distinct distinct headers and footers.
 
Verify Server Certificates with :
proenv>pkiutil -display DLC\keys\X.pem
 
4.   Use CERTUTIL to Import the root CA certificate and any intermediate certificate(s) from the CA into the client's root store ():
  • The user account needs read/write permissions on dlc\certs and dlc\certs\backup
  • When the certificate is provided in the DER format, use the "-format DER" parameter is needed, otherwise import will fail with error: "does not contain a Digital Certificate"
proenv>certutil [ -format DER ] -import %DLC%\keys\requests\rootCA.cer 
proenv>certutil [ -format DER ] -import %DLC%\keys\requests\X.cer
                       
This will create hash formatted files with the extension .0 for each certificate imported to the DLC\certs directory.
 
Verify Client Certificates with :
proenv>certutil -verbose -list X

Copy each of these hash .0 files to the <OpenEdge installation>\certs directory for each of the OE clients to be deployed.
Alternatively import the certificates on the client directly as outlined above, if OpenEdge is installed a these tools are available (certutil, pkiutil, and procertm)

5.   Users of Classic AIA, WSA, or Java apps hosted remotely may need to import the Root CA into the Java Keystore for Tomcat or the external Java application with the Java utility keytool:
<Java install directory>\bin\keytool -v -import -alias <aliasname> -file X.cer -keystore <java keystore file>
 
6.   The AdminServer will need to trust the root CA if client connections to AppServer Brokers, WebSpeed Brokers are needed.
The tool to add certs for the AdminServer is procertm.
procertm -i <certificate>[.crt | .pem] <DLC>\certs\psccerts.jar

Certificates loaded into psccerts.jar can be validated with:
procertm -l -v %DLC%\certs\psccerts.jar
7.   (finally) review and update Servers Configuration under the specific ssl enabled Broker:

ubroker.properties / conmgr.properties
noHostVerify=1 # if -nohostverify is used in the CONNECT statement with -ssl
sslEnable=true
sslkeyAlias=<alias name>
sslkeyAliasPasswd=20333c34252a2137 # use $DLC/bin/genpassword -password <actual password> to generate encrypted password to copy for this property

If the database is started un-managed, review and update scripts:
proserve <db name> -S <port#> -ssl -keyalias X -keyaliaspasswd 20333c34252a2137

For PASOE environments refer to Article:
Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 7:32 AM

Powered by