{"id":2523,"date":"2023-05-22T12:19:05","date_gmt":"2023-05-22T12:19:05","guid":{"rendered":"https:\/\/signmycode.com\/blog\/?p=2523"},"modified":"2025-08-22T09:49:53","modified_gmt":"2025-08-22T09:49:53","slug":"ca-b-forum-code-signing-baseline-requirements-v2-8","status":"publish","type":"post","link":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8","title":{"rendered":"CA\/B Forum Baseline Requirements v2.8 for Code Signing Certificates"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Under the <a href=\"https:\/\/cabforum.org\/uploads\/Baseline-Requirements-for-the-Issuance-and-Management-of-Code-Signing.v2.8.pdf\">CA\/B Forum BRs for Code Signing Certificates v2.8<\/a>, Sectigo Certificate Services has implemented a hosted key attestation service to ensure the verification of hardware-backed keypairs during the issuance and management of Code Signing Certificates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This comprehensive document outlines the specifics of Sectigo&#8217;s key attestation service and the <a href=\"https:\/\/signmycode.com\/blog\/what-is-a-hardware-security-module-role-of-hsms-for-digital-signing\">hardware security modules (HSM) <\/a>compatible with the successful verification of cryptographic data required for code signing certificate issuance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Sectigo key attestation service plays a crucial role by validating the cryptographic data and authorizing the issuance of both OV (Organization Validated) and EV (Extended Validation) code signing certificates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recommended: <a href=\"https:\/\/signmycode.com\/blog\/what-is-key-attestation-for-code-signing-certificates\">What is Key Attestation for Code Signing Certificates?<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At present, Sectigo&#8217;s key attestation service supports verifying Luna HSMs&#8217; public key confirmation packages and YubiKey attestation certificates. These hardware devices have been rigorously tested and proven to meet the requirements for code signing certificate validation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-key-information-of-ca-b-forum\">Key Information of CA\/B Forum<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The section explains the content and intended audience, outlines the scope of the article, details of the key attestation, and the supported hardware devices for Sectigo&#8217;s key attestation service. It also mentions the supported operating systems and browsers. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Here&#8217;s a breakdown of the key points:<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-assumptions-and-intended-audience\">Assumptions and Intended Audience: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The text assumes the reader is familiar with the CA\/B forum baseline requirements for Public CAs. The content is intended for IT or security administrators responsible for managing public certificates and hardware security modules (HSMs) within their company or organization.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-scope-of-the-blog\">Scope of the Blog: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The article focuses specifically on instructions for creating and verifying the key attestation cryptographic data for the supported HSMs. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-key-attestation\">Key Attestation: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Key attestation can be described as a method by a cryptographic module to prove the possession of a cryptographic key to a third party. It is a process used to validate the authenticity and security of the cryptographic data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-product-support-details\">Product Support Details: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Coming to listing the hardware devices currently supported by Sectigo&#8217;s key attestation service: the <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Luna Network Attached HSM (Version 7.x)<\/mark><\/strong> and the <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">YubiKey 5 FIPS Series<\/mark><\/strong>. These devices have been tested and verified to work with the key attestation service.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-supported-operating-system-and-browsers\">Supported Operating System and Browsers: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The document advises referring to the vendor documentation for managing the HSMs&#8217; operating systems. As for browsers, Sectigo&#8217;s key attestation service is compatible with Chrome, Firefox, and Edge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Overall, the text provides background information, clarifies the intended audience, specifies the scope of the document, explains key attestation, and provides details about the supported hardware devices, operating systems, and browsers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-to-get-an-attestation-certificate-for-yubikey-5\">How to Get an Attestation Certificate for YubiKey 5?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"320\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey5-fips-series-jpg.webp\" alt=\"YubiKey 5 FIPS Series\" class=\"wp-image-2525\" style=\"width:442px;height:295px\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey5-fips-series-jpg.webp 480w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey5-fips-series-300x200.webp 300w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The text explains the process and format of generating an attestation certificate for the YubiKey 5 FIPS Series USB tokens. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Here are the key points:<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-yubikey-5-fips-series\">YubiKey 5 FIPS Series: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">These USB tokens can generate an attestation certificate. The attestation certificate has the same key as the CSR (Certificate Signing Request) and is signed by the intermediate attestation certificate, which can be downloaded from the device. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The intermediate attestation certificate is, in turn, signed by the YubiKey private root certificate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-attestation-package-format\">Attestation Package Format: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The YubiKey attestations are standard <a href=\"https:\/\/signmycode.com\/blog\/what-is-x-509-certificate-how-it-works-and-how-to-to-obtain-it\">x.509 certificates<\/a> that contain the key attestation. However, more than the attestation certificate is required to validate the attestation. The device&#8217;s intermediate attestation certificate is also required.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-base64-encoding\">Base64 Encoding: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The key attestation service expects a base64 encoded blob created by concatenating the PEM-encoded certificates. This means that the attestation certificate and the intermediate attestation certificate must be encoded in base64 format and combined into a single blob.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recommended: <a href=\"https:\/\/signmycode.com\/blog\/what-is-a-yubikey-how-does-it-work-detailed-guide\">What is a YubiKey? How Does it Work? [Detailed Guide]<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-steps-to-generate-an-attestation-certificate-amp-csr-using-yubikey-manager\">Steps to Generate an Attestation Certificate &amp; CSR using YubiKey Manager<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To generate a CSR (Certificate Signing Request), attestation certificate, and get the intermediate attestation certificate for an ECC keypair using YubiKey Manager on Windows, follow these steps:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\"><strong>Step 1:<\/strong> <\/mark>Open YubiKey Manager and go to <strong>Applications &gt; PIV3<\/strong>. Click on <strong>Certificates<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"933\" height=\"627\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-5-nfc-fips-1.webp\" alt=\"YubiKey 5 NFC FIPS\" class=\"wp-image-5417\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-5-nfc-fips-1.webp 933w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-5-nfc-fips-1-300x202.webp 300w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-5-nfc-fips-1-768x516.webp 768w\" sizes=\"auto, (max-width: 933px) 100vw, 933px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"690\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-5-nfc-fips-application-piv-1.webp\" alt=\"YubiKey 5 NFC FIPS PIV\" class=\"wp-image-5418\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-5-nfc-fips-application-piv-1.webp 1024w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-5-nfc-fips-application-piv-1-300x202.webp 300w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-5-nfc-fips-application-piv-1-768x518.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\"><strong>Step 2:<\/strong> <\/mark>Select <strong>Authentication (Slot 9a)<\/strong> and click <strong>Generate<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-authentication-slot-9a-yubikey-manager-1024x499.png\" alt=\"YubiKey Manager Authentication Slot 9a\" class=\"wp-image-2557\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-authentication-slot-9a-yubikey-manager-1024x499.png 1024w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-authentication-slot-9a-yubikey-manager-300x146.png 300w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-authentication-slot-9a-yubikey-manager-768x375.png 768w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-authentication-slot-9a-yubikey-manager.png 1144w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 3:<\/mark><\/strong> Choose <strong>Certificate Signing Request (CSR) <\/strong>and press <strong>Next<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"482\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-csr-yubikey-manager-1.webp\" alt=\"Generate CSR Yubikey\" class=\"wp-image-5414\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-csr-yubikey-manager-1.webp 1024w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-csr-yubikey-manager-1-300x141.webp 300w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-csr-yubikey-manager-1-768x362.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\"><strong>Step 4:<\/strong> <\/mark>Select an algorithm from the drop-down menu and click <strong>Next<\/strong>. For E<strong>V Code Signing Certificates<\/strong>, choose <strong>ECCP256 <\/strong>or <strong>ECCP384<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"311\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-algorithem.png\" alt=\"\" class=\"wp-image-2531\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-algorithem.png 600w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-algorithem-300x156.png 300w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/yubikey-algorithem-266x138.png 266w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 5:<\/mark><\/strong> Enter a <strong>Subject Name<\/strong> for the certificate and select <strong>Next<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"497\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/subject-name-yubikey-manager-1.webp\" alt=\"Enter Subject Name YubiKey Manager\" class=\"wp-image-5420\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/subject-name-yubikey-manager-1.webp 1024w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/subject-name-yubikey-manager-1-300x146.webp 300w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/subject-name-yubikey-manager-1-768x373.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 6<\/mark>:<\/strong> Tap <strong>Generate and provide the necessary information<\/strong>, including the storage location for the CSR, management key, and PIN.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"515\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-csr-with-yubikey-manager-1.webp\" alt=\"Enter File Name CSR\" class=\"wp-image-5421\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-csr-with-yubikey-manager-1.webp 1024w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-csr-with-yubikey-manager-1-300x151.webp 300w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/generate-csr-with-yubikey-manager-1-768x386.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\"><strong>Step 7<\/strong>:<\/mark> Open a shell as Administrator and navigate to the YubiKey Manager directory. For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd 'C:\\Program Files\\Yubico\\YubiKey Manager\\'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 8:<\/mark> <\/strong>Run the following command to create the attestation certificate, replacing the path to save the attestation certificate as needed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\\ykman.exe piv keys attest -F PEM 9a attestation.crt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 9:<\/mark><\/strong> Execute the following command to export the intermediate certificate:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\\ykman.exe piv certificates export -F PEM f9 intermediateCA.crt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 10:<\/mark><\/strong> The attestation service expects the attestation blob to be base64 encoded. Run the following commands to encode the attestation certificates as a single <strong>base64 encoded <\/strong>file:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>NOTE: <\/strong>Certutil encode inserts a PEM header and footer that should not be included since Findstr removes them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Combine the certificates into a single file:<\/mark><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type attestation.crt intermediateCA.crt &gt; attestation.pem<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Encode the combined file in base64:<\/mark><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certutil -encode attestation.pem attestation.b64<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Remove the unnecessary PEM headers and footers:<\/mark><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>findstr \/v CERTIFICATE attestation.b64 &gt; attestation.b64<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 11:<\/mark><\/strong> <strong>Submit the CSR and the base64 encoded attestation<\/strong> to the Sectigo key attestation service for verification (From where you ordered).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Please note that these instructions are specifically for Windows. If using a different operating system, refer to YubiCo&#8217;s instructions for guidance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-create-csr-and-key-attestation-for-the-luna-network\">Create CSR and Key Attestation for the Luna Network<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let us discuss the instructions for creating a Certificate Signing Request (CSR) and key attestation for the Luna Network Attached HSM 7.x. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here, we will mention the attestation package format and provide details about generating a public key confirmation (PKC) file in an RSA key pair context. Coming to the breakdown of the key points:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-luna-network-attached-hsm-7-x\">Luna Network Attached HSM 7.x: <\/h3>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"350\" src=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/luna-hsm-thales.png\" alt=\"Luma HSM 7\" class=\"wp-image-2524\" style=\"width:499px;height:291px\" srcset=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/luna-hsm-thales.png 600w, https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/luna-hsm-thales-300x175.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This section focuses on the Luna HSMs and their ability to generate a public key confirmation package (PKC) as the key attestation. The PKC is used to verify that a specific key pair was generated and stored within the Luna HSM.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-attestation-package-format-0\">Attestation Package Format: <\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Luna HSMs generate PKC files that are DER-encoded PKCS7 files. These files contain the key attestation. The key attestation service expects the PKC file to be encoded in base64 format.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-pkc-for-rsa-keypair\">PKC for RSA Keypair: <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When generating a PKC for an RSA key pair, there are two possible formats mentioned:<\/p>\n\n\n\n<ol start=\"1\" style=\"list-style-type:lower-alpha\" class=\"wp-block-list\">\n<li><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">TC-Trust Center:<\/mark><\/strong> The PKC contains three certificates in this format, and the certificate chain does not end with a root certificate.<\/li>\n<\/ol>\n\n\n\n<ol start=\"2\" style=\"list-style-type:lower-alpha\" class=\"wp-block-list\">\n<li><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Chrysalis-ITS:<\/mark> <\/strong>The PKC contains five certificates in this structure, and the certificate chain ends with a root certificate. <br><br>It&#8217;s recommended to select the Chrysalis-ITS format because documentation is available from the vendor, which you can access <a href=\"https:\/\/thalesdocs.com\/gphsm\/luna\/7.2\/docs\/network\/Content\/configuration\/confirm\/confirm_hsm.htm\">here<\/a>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Overall, these pointers are mentioned for creating a CSR and key attestation using the Luna Network. Attached is the HSM 7.x. It explains the format of the attestation package and provides options for generating PKC files in the context of an RSA key pair.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-to-use-the-chrysalis-its-format-for-generating-csr-amp-pkc\">How to use the Chrysalis-ITS format for Generating CSR &amp; PKC?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To generate a CSR (Certificate Signing Request) and PKC (Public Key Confirmation) in Chrysalis-ITS format, <strong>follow the steps below:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step: 1<\/mark><\/strong> Launch the Luna remote client and log in to the Luna HSM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 2:<\/mark><\/strong> Generate an RSA key pair on a Luna Partition1 using the LunaCM2 utility. Execute the following command, replacing &#8220;<strong>LABEL<\/strong>&#8221; with the desired key pair identifier:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-for-windows\">For Windows:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>c:\\ cd c:\\Program Files\\SafeNet\\LunaClient\nc:\\Program Files\\SafeNet\\LunaClient\\&gt; lunacm<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-for-linux\">For Linux:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;cd \/usr\/safenet\/lunaclient\/bin\n.\/lunacm<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>cmu gen -modulusBits=3072 -publicExp=65537 -sign=T -verify=T -label=LABEL -extractable=false<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>NOTE: <\/strong>The parameters &#8220;-extractable=false&#8221; and &#8220;-sign=T&#8221; is mandatory for successful CSR generation since Luna won&#8217;t utilize this key to sign the CSR. And for code signing certificates, RSA key size must be at least 3072.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 3:<\/mark><\/strong> Retrieve the handle numbers of the public and private keys by executing the following commands:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cmu list -class public -label=LABEL\ncmu list -class private -label=LABEL<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 4:<\/mark><\/strong> Generate a CSR using the following command, replacing &#8220;ABC&#8221; and &#8220;XYZ&#8221; with the public and private key handles, respectively:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cmu requestcert -publichandle=ABC -privatehandle=XYZ -C=CA -L=Ottawa -O=Sectigo -CN=\"PKC Test Cert\" -outputFile=rsacsr.pem<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 5:<\/mark> <\/strong>Generate a PKC by running the following command, replacing &#8220;<strong>ABC<\/strong>&#8221; with your public key handle and &#8220;<strong>attestation.p7b<\/strong>&#8221; with the <strong>desired file name<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cmu getpkc -handle=ABC -outputfile=attestation.p7b -pkctype=2 -verify<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 6: <\/mark><\/strong>Encode the attestation PKC file to <strong>base64 format<\/strong>. Use the following commands:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>For Windows:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certutil -encode attestation.p7b attestation.b64\nfindstr \/v CERTIFICATE attestation.b64 &gt; attestation.b64<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>For Linux:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>base64 attestation.p7b &gt; attestation.b64<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#00b373\" class=\"has-inline-color\">Step 7:<\/mark> <\/strong>Submit the generated CSR and base64-encoded attestation to the Sectigo key attestation service to verify the HSM&#8217;s authenticity in issuing code signing certificates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Following these steps, you can generate a CSR and PKC in Chrysalis-ITS format for use in the Sectigo key attestation service.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Under the CA\/B Forum BRs for Code Signing Certificates v2.8, Sectigo Certificate Services has implemented a hosted key attestation service to ensure the verification of hardware-backed keypairs during the issuance and management of Code Signing Certificates. This comprehensive document outlines the specifics of Sectigo&#8217;s key attestation service and the hardware security modules (HSM) compatible with&hellip; <a class=\"more-link\" href=\"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8\">Read More <span class=\"screen-reader-text\">CA\/B Forum Baseline Requirements v2.8 for Code Signing Certificates<\/span><\/a> <\/p>\n","protected":false},"author":1,"featured_media":2544,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[399,400,398,421,401,402,404,403],"class_list":["post-2523","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-signing-updates","tag-ca-b-forum-baseline-requirements-for-code-signing","tag-ca-b-forum-brs-for-code-signing-certificates-v2-8","tag-ca-browser-forum","tag-ca-browser-guideline-for-code-signing-certificate","tag-cab-forum-baseline-requirements","tag-cab-forum-guidelines","tag-sectigo-baseline-requirements","tag-what-are-the-baseline-requirements","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CA\/Browser Forum Updates v2.8 Code Signing Certificates<\/title>\n<meta name=\"description\" content=\"Learn Code Signing BR v-2.8 guideline for code signing certificate, how Sectigo&#039;s key attestation and the hardware security modules works.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CA\/Browser Forum Updates v2.8 Code Signing Certificates\" \/>\n<meta property=\"og:description\" content=\"Learn Code Signing BR v-2.8 guideline for code signing certificate, how Sectigo&#039;s key attestation and the hardware security modules works.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8\" \/>\n<meta property=\"og:site_name\" content=\"SignMyCode - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-22T12:19:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-22T09:49:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/ca-b-forum-baseline-requirments-for-code-signing-certificates-v28-jpg.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"912\" \/>\n\t<meta property=\"og:image:height\" content=\"453\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Janki Mehta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Janki Mehta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/ca-b-forum-code-signing-baseline-requirements-v2-8\",\"url\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/ca-b-forum-code-signing-baseline-requirements-v2-8\",\"name\":\"CA\\\/Browser Forum Updates v2.8 Code Signing Certificates\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/ca-b-forum-code-signing-baseline-requirements-v2-8#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/ca-b-forum-code-signing-baseline-requirements-v2-8#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/ca-b-forum-baseline-requirments-for-code-signing-certificates-v28-jpg.webp\",\"datePublished\":\"2023-05-22T12:19:05+00:00\",\"dateModified\":\"2025-08-22T09:49:53+00:00\",\"description\":\"Learn Code Signing BR v-2.8 guideline for code signing certificate, how Sectigo's key attestation and the hardware security modules works.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/ca-b-forum-code-signing-baseline-requirements-v2-8#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/signmycode.com\\\/blog\\\/ca-b-forum-code-signing-baseline-requirements-v2-8\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/ca-b-forum-code-signing-baseline-requirements-v2-8#primaryimage\",\"url\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/ca-b-forum-baseline-requirments-for-code-signing-certificates-v28-jpg.webp\",\"contentUrl\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/ca-b-forum-baseline-requirments-for-code-signing-certificates-v28-jpg.webp\",\"width\":912,\"height\":453,\"caption\":\"Baseline Requirements for Code Signing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/ca-b-forum-code-signing-baseline-requirements-v2-8#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CA\\\/B Forum Baseline Requirements v2.8 for Code Signing Certificates\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/\",\"name\":\"SignMyCode - Blog\",\"description\":\"Code Signing News, Updates\",\"publisher\":{\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/#organization\",\"name\":\"SignMyCode.com\",\"url\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/logo1.png\",\"contentUrl\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/logo1.png\",\"width\":135,\"height\":86,\"caption\":\"SignMyCode.com\"},\"image\":{\"@id\":\"https:\\\/\\\/signmycode.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CA\/Browser Forum Updates v2.8 Code Signing Certificates","description":"Learn Code Signing BR v-2.8 guideline for code signing certificate, how Sectigo's key attestation and the hardware security modules works.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8","og_locale":"en_US","og_type":"article","og_title":"CA\/Browser Forum Updates v2.8 Code Signing Certificates","og_description":"Learn Code Signing BR v-2.8 guideline for code signing certificate, how Sectigo's key attestation and the hardware security modules works.","og_url":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8","og_site_name":"SignMyCode - Blog","article_published_time":"2023-05-22T12:19:05+00:00","article_modified_time":"2025-08-22T09:49:53+00:00","og_image":[{"width":912,"height":453,"url":"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/ca-b-forum-baseline-requirments-for-code-signing-certificates-v28-jpg.webp","type":"image\/jpeg"}],"author":"Janki Mehta","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Janki Mehta","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8","url":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8","name":"CA\/Browser Forum Updates v2.8 Code Signing Certificates","isPartOf":{"@id":"https:\/\/signmycode.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8#primaryimage"},"image":{"@id":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8#primaryimage"},"thumbnailUrl":"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/ca-b-forum-baseline-requirments-for-code-signing-certificates-v28-jpg.webp","datePublished":"2023-05-22T12:19:05+00:00","dateModified":"2025-08-22T09:49:53+00:00","description":"Learn Code Signing BR v-2.8 guideline for code signing certificate, how Sectigo's key attestation and the hardware security modules works.","breadcrumb":{"@id":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8#primaryimage","url":"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/ca-b-forum-baseline-requirments-for-code-signing-certificates-v28-jpg.webp","contentUrl":"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2023\/05\/ca-b-forum-baseline-requirments-for-code-signing-certificates-v28-jpg.webp","width":912,"height":453,"caption":"Baseline Requirements for Code Signing"},{"@type":"BreadcrumbList","@id":"https:\/\/signmycode.com\/blog\/ca-b-forum-code-signing-baseline-requirements-v2-8#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/signmycode.com\/blog\/"},{"@type":"ListItem","position":2,"name":"CA\/B Forum Baseline Requirements v2.8 for Code Signing Certificates"}]},{"@type":"WebSite","@id":"https:\/\/signmycode.com\/blog\/#website","url":"https:\/\/signmycode.com\/blog\/","name":"SignMyCode - Blog","description":"Code Signing News, Updates","publisher":{"@id":"https:\/\/signmycode.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/signmycode.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/signmycode.com\/blog\/#organization","name":"SignMyCode.com","url":"https:\/\/signmycode.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/signmycode.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2021\/10\/logo1.png","contentUrl":"https:\/\/signmycode.com\/blog\/wp-content\/uploads\/2021\/10\/logo1.png","width":135,"height":86,"caption":"SignMyCode.com"},"image":{"@id":"https:\/\/signmycode.com\/blog\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/posts\/2523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/comments?post=2523"}],"version-history":[{"count":17,"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/posts\/2523\/revisions"}],"predecessor-version":[{"id":5422,"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/posts\/2523\/revisions\/5422"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/media\/2544"}],"wp:attachment":[{"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/media?parent=2523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/categories?post=2523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/signmycode.com\/blog\/wp-json\/wp\/v2\/tags?post=2523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}