This document describes the Redfish Certificate Service in tlBMC. It details the routes, actions, and resources used for managing certificates (such as trust bundles, server certificates, and owner verification certificates) for secure communication.
The Certificate Service implementation is split across two files:
GenerateCSR, ReplaceCertificate).These routes are active if the TrustBundleInstallModule is enabled in the Central Configuration.
The configuration flag trust_bundle_install_module.enabled is checked in all_routes.cc:
if (GetTlbmcConfig().trust_bundle_install_module().enabled()) { certificate_service::RegisterRoutes(app, root_path); manager_certificates::RegisterRoutes(app); }
/redfish/v1/CertificateServiceHandleCertificateService#CertificateService.GenerateCSR#CertificateService.ReplaceCertificateThe following JSON snippet demonstrates a sample Redfish representation of the CertificateService resource as exposed over HTTP GET requests:
{ "@odata.id": "/redfish/v1/CertificateService", "@odata.type": "#CertificateService.v1_1_0.CertificateService", "Actions": { "#CertificateService.GenerateCSR": { "@Redfish.ActionInfo": "/redfish/v1/CertificateService/GenerateCSRActionInfo", "target": "/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSR" }, "#CertificateService.ReplaceCertificate": { "@Redfish.ActionInfo": "/redfish/v1/CertificateService/ReplaceCertificateActionInfo", "target": "/redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate" } }, "Description": "Actions related to certificates.", "Id": "CertificateService", "Name": "Certificate Service" }
/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSRHandleGenerateCsr/redfish/v1/CertificateService/GenerateCSRActionInfo (GET) - HandleGenerateCsrActionInfoAlternativeNames (Array of Strings, Optional): Subject Alternative Names for the certificate.City (String, Required): The city or locality of the organization.CommonName (String, Required): The fully qualified domain name (FQDN) or IP address.Country (String, Required): The two-letter country code.Organization (String, Required): The legal name of the organization.OrganizationalUnit (String, Required): The division or department.State (String, Required): The state or province.CertificateCollection (Object, Required): Must contain a /CertificateCollection/@odata.id pointing to the main certificates path /redfish/v1/Managers/bmc/Certificates.CSRString (String): The PEM-encoded CSR string.CertificateCollection (Object): Link back to the collection /redfish/v1/Managers/bmc/Certificates./redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificateHandleReplaceCertificate/redfish/v1/CertificateService/ReplaceCertificateActionInfo (GET) - HandleReplaceCertificateActionInfoCertificateUri parameter.CertificateString (String, Required): The PEM-encoded certificate content.CertificateType (String, Required): Must be "PEM".CertificateUri (Object, Required): Must contain a /CertificateUri/@odata.id pointing to one of the supported certificate URIs listed below.DetachedSignature (String, Optional): A PEM-encoded PKCS#7 detached signature to authenticate the CertificateString. Required for TrustBundle and TrustedUserCAKeys.BmcSshTrustedUserCAKeys (String, Optional): Trusted user CA keys for SSH access. Replaces the current SSH keys. (Used when replacing OwnerVerificationCertificate).OwnerVerificationCertificateConfiguration (Object, Optional): Configuration settings to apply when the Owner Verification Certificate (OVC) is installed. Used when replacing OwnerVerificationCertificate.SshEnabled (Boolean, default true): Enables/disables SSH access.FirmwareUpdateEnabled (Boolean, default true): Enables/disables firmware updates.SerialConsoleAccessLevel (String, default “Full”): Access level for the serial console. Must be one of: "Full", "ReadOnly", "Disable".BundleDevVerificationEnabled (Boolean, default true): Enables/disables verification with a developer key for firmware bundles.SyslogCertificateConfiguration (Object, Optional): Configuration for the syslog target collector when replacing SyslogCertificate.TargetIp (String, Required if config is provided)TargetPort (Integer, Required if config is provided)/redfish/v1/Managers/bmc/Certificates/TrustBundleHandleInstallTrustBundleDetachedSignature. Triggers a Redfish service restart asynchronously to apply the changes./redfish/v1/Managers/bmc/Certificates/ServerCertHandleInstallServerCert/redfish/v1/Managers/bmc/Certificates/OsVerificationCertificateHandleInstallOsCert/var/google/os-keys/./redfish/v1/Managers/bmc/Certificates/OwnerVerificationCertificateHandleInstallOwnerVerificationCert/var/google/owner-verification/staged/cert.pem. It also stages SSH CA keys (from BmcSshTrustedUserCAKeys parameter) at /var/google/ssh/trusted_ca_pubkeys, and OVC configuration (OwnerVerificationCertificateConfiguration parameter) at /var/google/owner-verification/staged/config.textproto./redfish/v1/Managers/bmc/Certificates/TrustedUserCAKeysHandleTrustedUserCAKeysDetachedSignature./redfish/v1/Managers/bmc/Certificates/SyslogCertificateHandleInstallSyslogCertSyslogCertificateConfiguration parameter).These resources are registered in manager_certificates.cc and support GET requests to retrieve certificate details.
/redfish/v1/Managers/bmc/CertificatesHandleGetCertificateCollectionMembers array./redfish/v1/Managers/bmc/Certificates/OwnerVerificationCertificateHandleGetOwnerVerificationCertificate/Oem/Google/BmcSshTrustedUserCAKeys: Signature of the trusted user CA keys./Oem/Google/OwnerVerificationCertConfiguration: Current OVC configuration:SshEnabled (Boolean)SerialConsoleAccessLevel (String: “Full”, “ReadOnly”, or “Disable”)FirmwareUpdateEnabled (Boolean)/redfish/v1/Managers/bmc/Certificates/TrustBundleHandleGetTrustBundle/Oem/Google/DetatchedSignature: Detached signature of the trust bundle./redfish/v1/Managers/bmc/Certificates/ServerCertHandleGetServerCert/redfish/v1/Managers/bmc/Certificates/OsVerificationCertificateHandleGetOsVerificationCertificate/redfish/v1/Managers/bmc/Certificates/TrustedUserCAKeysHandleGetTrustedUserCAKeys/Oem/Google/DetatchedSignature: Detached signature of the trusted user CA keys./redfish/v1/Managers/bmc/Certificates/SyslogCertificateHandleGetSyslogCertificate/Oem/Google/SyslogCertificateConfiguration: Current target configuration:Address (String)Port (Integer)