質問

Advanced Search

Solution ID : SOT0016

Last Modified : 05/21/2021

[CertCentral] コードサイニング証明書のCSR 生成/PKCS#12ファイルの生成 (openssl)

Problem

コードサイニング証明書のブラウザへのインストールが失敗する場合は、利用環境で鍵生成に制限がある場合があります。
そのような環境では、予め秘密鍵とCSRを用意して、申請時にCSRを張り付けて、発行された証明書を秘密鍵とペアにして利用する方法があります。

このページではOpensslを使用した秘密鍵/CSR生成および、発行後のPKCS#12ファイルの生成方法を紹介します。

Solution

必ずお読みください

  • 本文書の内容によって生じた結果の影響について、弊社では一切の責任を負いかねますこと予めご了承ください。
  • 本文書は基本的な構成を想定しています。お客様のシステム環境や構成、設定状況などにより、手順や画面表示が変わることがあります。
  • 本文書の手順で動作しない場合やアプリケーション及びツールの仕様及び設定手順等に関する不明な点は、当社ではサポートできませんので、
    製品のマニュアルをお読みいただくか、開発元にご確認ください。
  • OpenSSL がインストールされていることが前提となります。

 

秘密鍵とCSRの生成

  1. 秘密鍵を作成します。
    3072bit の秘密鍵(ファイル名:private.key)を作成する場合の例

    # ./openssl genrsa -des3 -out (秘密鍵ファイル名) (キー長)

    例: openssl genrsa -des3 -out private.key 3072

    ※2021/5/28以降、鍵長3072bit以上のRSA鍵で生成したCSRでないと申請を受つけなくなります。(詳細情報

  2. 秘密鍵を保護するためのパスフレーズの入力を求められます。
    任意のフレーズを入力し、[Enter]キーを押します(同じフレーズを2度入力します)。
    ここで入力するパスフレーズは、絶対に忘れないように大切に管理してください。

  3. 指定したファイル名 (private.key) で、秘密鍵ファイルが作成されます。
     
  4. 作成した秘密鍵ファイルからCSRを生成します。

    # ./openssl req -new -key (秘密鍵ファイル名) -out (CSRファイル名)

    例: openssl req -new -key private.key -out code.csr

  5. 秘密鍵のパスフレーズの入力を求められます。
    秘密鍵作成時に指定したパスフレーズを入力し、[Enter]キーを押します。

  6. 続いて、ディスティングイッシュネーム情報を順に入力していきます。
    ※証明書は認証された情報に変更されて発行されますのでここで指定した情報が反映されるわけではありません。

    <入力例>

    Country Name (2 letter code) [AU]:JP         ※国コード
    State or Province Name (full name) []:Tokyo      ※都道府県
    Locality Name (eg, city) []:Chuo-Ku          ※市区町村
    Organization Name (eg, company) []:Sample K.K.    ※組織名
    Organizational Unit Name (eg, section) []:Web Sales Dept. ※部門名
    Common Name (eg, YOUR name) []:Sample K.K.    ※組織名
     
    入力必須項目は、ここまでの6項目です。

    これ以降以下の様な項目が表示される場合、入力不要です。
    何も入力せず[Enter]キーを押して進んでください。

    Email Address []:  A challenge password []:  An optional company name []:

  7. CSRが生成されます。
    生成されたCSRをCertCentralの申請画面にアップロードするかメモ帳などで開き、テキストを貼り付けます。



 

証明書ファイルの変換

証明書が発行されると証明書と中間CA証明書、ルート証明書が含まれるPKCS#7形式のファイル(.p7b)が添付されて送られます。
Signtoolでの署名等に利用するには、秘密鍵を含んだPKCS#12形式のファイル(.pfx または.p12)に変換する必要があります。

  1. 証明書と中間CA証明書を取得します。

    ▶CertCentralで証明書と中間CA証明書をダウンロードする方法(p7bファイルを使わない)

    1. CertCentralにログインして、証明書>オーダーをクリックします。
    2. オーダー一覧から対象のオーダーの「クイックビュー」をクリックします。
    3. 右側サイドペインの「以下の形式で証明書をダウンロード」から証明書と中間CA証明書をダウンロードします。

      証明書:orgnization_name.pem *組織名がファイル名になります。
      中間CA証明書:DigiCert SHA2 Assured ID Code Signing CA.pem




    ▶[p7bファイルをcertmgrを使用してエクスポートする方法]

    1. p7bファイルを保存してダブルクリックします。
    2. 左サイドペインを展開して証明書フォルダを開くと、ルート証明書、証明書(組織名)、中間CA証明書が表示されます。



    3. 証明書と中間CA証明書をそれぞれ右クリックして、エクスポートをします。



    4. 証明書のエクスポートウィザードをすすめて、「Base 64 encoded X.509(.cer)」形式で
      エクスポートして任意のファイルネームで保存します。

      <保存例>
      証明書: cert.cer
      中間CA証明書: digicertCA.cer


    ▶Opensslを利用してp7bファイルを証明書ファイルに変換する方法

    1. Openssl でp7bファイルから証明書ファイルを生成します。
      # openssl pkcs7 -print_certs -in (p7bファイル名) -out  (作成する証明書ファイル)     
      例:openssl pkcs7 -print_certs -in sample.p7b -out cert.cer

    2. 作成した証明書ファイルをメモ帳で開きます。
      ファイルには証明書、中間CA証明書、ルート証明書の順で記載されています。


    3. 証明書の「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」までを
      切り取り、メモ帳で任意の名前で保存します。

      <保存例> 証明書: cert.cer

    4. 中間CA証明書のの「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」までを
      切り取りメモ帳で任意の名前で保存します。

      <保存例> 中間CA証明書: digicertCA.cer


  2. 証明書と中間CA証明書と秘密鍵からopensslでPKCS#12形式(.pdx)のファイルを作成します。
    ※設定したパスワードは署名時などに必要になりますので、忘れないようにしてください。

    # openssl pkcs12 -export -in (証明書ファイル名) -inkey  (秘密鍵ファイル名)  -certfile (中間CA証明書ファイル名) -out (作成するpfxファイル名)
    Enter pass phrase for private.key:  (秘密鍵のパスワードを入力します)
    Enter Export Password: (PKCS #12ファイルにパスワードを設定します)
    Verifying - Enter Export Password: (設定したパスワードを再入力します)

    例:openssl pkcs12 -export -in cert.cer -inkey private.key -certfile digicertCA.cer -out code.pfx