7.2.1.2. Case II: Security Databases to HSM Migration
Remove all the security databases in the new Certificate System which will receive migrated data.
rm /var/lib/instance_ID/alias/cert8.db rm /var/lib/instance_ID/alias/key3.db
Copy the certificate and key security databases from the old server to the new server.
cp old_server_root/cert-old_CA_instance/config/cert-old_CA_instance-cert7.db /var/lib/instance_ID/alias/cert7.db cp old_server_root/cert-old_CA_instance/config/cert-old_CA_instance-key3.db /var/lib/instance_ID/alias/key3.db
Log into the new server as the Certificate System user, and open the new Certificate System alias/ directory.
cd /var/lib/instance_ID/alias/
Log in as root, and set the file owner to the Certificate System user and group.
su chown user:group cert7.db chown user:group key3.db
Log out as root. As the Certificate System user, edit the file permissions on the security databases.
chmod 00600 cert7.db chmod 00600 key3.db
Use the certutil tool to list all of the old Certificate Management System certificates. In this example, -L lists the certificates, and -X forces them to be read/write.
certutil -L -X -d . Server-Cert cert-old_CA_instance cu,cu,cu caSigningCert cert-old_CA_instance cu,cu,cu
Export the public/private key pairs of each entry in the old security databases; -o exports the key pairs, and -n sets the name of the file to which to export them.
pk12util -o ServerCert.p12 -n "Server-Cert cert-old_CA_instance" -d . Enter Password or Pin for "NSS Certificate DB":******** Enter password for PKCS12 file: ******** Re-enter password: ******** pk12util: PKCS12 EXPORT SUCCESSFUL pk12util -o caSigningCert.p12 -n "caSigningCert cert-old_CA_instance" -d . Enter Password or Pin for "NSS Certificate DB":******** Enter password for PKCS12 file: ******** Re-enter password: ******** pk12util: PKCS12 EXPORT SUCCESSFUL
The old security databases may contain additional public/private key pairs; these may also need to be exported using pk12util.
Remove the old security databases from the alias/ directory.
rm cert7.db rm cert8.db rm key3.db
Register the new HSM in the new token database.
modutil -nocertdb -dbdir . -add new_HSM_token_name -libfile new_HSM_library_path/new_HSM_library
Identify the new HSM slot name.
modutil -dbdir . -nocertdb -list
Create new security databases.
certutil -N -d .
Import the public/private key pairs in the PKCS #12 files into the new HSM.
pk12util -i ServerCert.p12 -d . -h new_HSM_slot_name Enter Password or Pin for "new_HSM_slot_name":******** Enter password for PKCS12 file: ******** pk12util: PKCS12 IMPORT SUCCESSFUL pk12util -i caSigningCert.p12 -d . -h new_HSM_slot_name Enter Password or Pin for "new_HSM_slot_name":******** Enter password for PKCS12 file: ******** pk12util: PKCS12 IMPORT SUCCESSFUL
Optionally, delete the PKCS #12 files.
rm ServerCert.p12 rm caSigningCert.p12
Set the trust bits on the public/private key pairs that were imported into the new HSM.
certutil -M -n "new_HSM_slot_name:Server-Cert cert-old_CA_instance" -t "cu,cu,cu" -d . -h new_HSM_token_name certutil -M -n "new_HSM_slot_name:caSigningCert cert-old_CA_instance" -t "CTu,CTu,CTu" -d . -h new_HSM_token_name
Open the CS.cfg configuration file.
cd /var/lib/instance_ID/conf/ vi CS.cfg
Modify the ca.signing.cacertnickname and ca.ocsp_signing.cacertnickname attributes to reflect the new HSM information.
ca.signing.cacertnickname= new_HSM_slot_name:caSigningCert cert-old_CA_instance ca.ocsp_signing.cacertnickname= new_HSM_slot_name:caSigningCert cert-old_CA_instance
If there is CA-DRM connectivity, then modify the ca.connector.KRA.nickname attribute value.
ca.connector.KRA.nickname=new_HSM_slot_name:caSigningCert cert-old_CA_instance
In the same directory, edit the serverCertNick.conf file to contain the old certificate nickname. For example:
vi serverCertNick.confnew_HSM_slot_name:Server-Cert cert-old_CA_instance