Certificate and Key Management
Host Verification Service Certificates and Keys
The Host Verification Service has several unique certificates not present on other services.
SAML
The SAML Certificate a is used to sign SAML attestation reports, and is itself signed by the Root Certificate. This certificate is unique to the Verification Service.
/opt/hvs/configuration/saml.crt
/opt/hvs/configuration/saml.crt.pem
/opt/hvs/configuration/SAML.jks
The SAML Certificate can be replaced with a user-specified keypair and certificate chain using the following command:
hvs replace-saml-key-pair --private-key=new.key.pem --cert-chain=new.cert-chain.pem
This will:
-
Replace key pair in
/opt/hvs/configuration/SAML.jks
, alias samlkey1 -
Update
/opt/hvs/configuration/saml.crt
with saml DER public key cert -
Update
/opt/hvs/configuration/saml.crt.pem
with saml PEM public key cert -
Update configuration properties:
saml.key.password to null
saml.certificate.dn
saml.issuer
If the Integration Hub is being used, the new SAML certificate will need to be imported to the Hub.
Asset Tag
The Asset tag Certificate is used to sign all Asset Tag Certificates. This certificate is unique to the Verification Service.
/opt/hvs/configuration/tag-cacerts.pem
The Asset Tag Certificate can be replaced with a user-specified keypair and certificate chain using the following command:
hvs replace-tag-key-pair --private-key=new.key.pem
--cert-chain=new.cert-chain.pem
This will:
-
Replace key pair in database table mw_file (cakey is private and public key pem formatted, cacerts is cert chain)
-
Update
/opt/hvs/configuration/tag-cacerts.pem with cert chain
-
Update configuration properties:
tag.issuer.dn
Privacy CA
The Privacy CA certificate is used as part of the certificate chain for creating the Attestation Identity Key (AIK) during Trust Agent provisioning. The Privacy CA must be a self-signed certificate. This certificate is unique to the Verification Service.
The Privacy CA certificate is used by Trust Agent nodes during Trust Agent provisioning; if the Privacy CA certificate is changed, all Trust Agent nodes will need to be re-provisioned.
/opt/hvs/configuration/PrivacyCA.p12
/opt/hvs/configuration/PrivacyCA.pem
The Privacy CA Certificate can be replaced with a user-specified keypair and certificate chain using the following command:
hvs replace-pca-key-pair --private-key=new.key.pem
--cert-chain=new.cert-chain.pem
This will:
-
Replace key pair in
/opt/hvs/configuration/PrivacyCA.p12
, alias 1 -
Update
/opt/hvs/configuration/PrivacyCA.pem
with cert -
Update configuration properties:
hvs.privacyca.aik.issuer
hvs.privacyca.aik.validity.days
tagent setup download-mtwilson-privacy-ca-certificate --force
tagent setup request-aik-certificate --force
tagent restart
Endorsement CA
The Endorsement CA is a self-signed certificate used during Trust Agent provisioning.
/opt/hvs/configuration/EndorsementCA.p12
/opt/hvs/configuration/EndorsementCA.pem
The Endorsement CA Certificate can be replaced with a user-specified keypair and certificate chain using the following command:
hvs replace-eca-key-pair --private-key=new.key.pem
--cert-chain=new.cert-chain.pem
This will:
-
Replace key pair in
/opt/hvs/configuration/EndorsementCA.p12
, alias 1 -
Update
/opt/hvs/configuration/EndorsementCA.pem
with accepted ECs -
Update configuration properties:
hvs.privacyca.ek.issuer
hvs.privacyca.ek.validity.days
tagent setup request-endorsement-certificate --force
tagent restart
TLS Certificates
TLS certificates for each service are issued by the Certificate Management Service during installation. If the CMS root certificate is changed, or to regenerate the TLS certificate for a given service, use the following commands (note: environment variables will need to be set; typically these are the same variables set in the service installation .env file):
<servicename> download_ca_cert
-
Download CMS root CA certificate
-
Environment variable CMS_BASE_URL=\<url> for CMS API url
-
<servicename> download_cert TLS
-
Generates Key pair and CSR, gets it signed from CMS
-
Environment variable CMS_BASE_URL=\<url> for CMS API url
-
Environment variable BEARER_TOKEN=\<token> for authenticating with CMS
-
Environment variable KEY_PATH=\<key_path> to override default specified in config
-
Environment variable CERT_PATH=\<cert_path> to override default specified in config