前回は、SSL証明書の概要と基本的な構造について紹介しました。
SSL証明書のうち「ルート証明書」は、クライアントのOSやブラウザにインストールされています。残りの「中間CA証明書」「SSLサーバー証明書」は、サーバーにインストールする必要があります。
本記事では、中間CA証明書、およびSSLサーバー証明書をサーバーにインストールするための事前準備を行います。
- はじめに
- 前提条件
- 【ステップ1】SSLサーバー証明書の申し込みと秘密鍵の作成
- 【ステップ2】中間CA証明書とSSLサーバー証明書の入手
- 【ステップ3】中間CA証明書、SSLサーバー証明書、秘密鍵のファイル形式変換
- 補足情報
- おわりに
はじめに
本記事では、大きく以下の作業を説明します。
【ステップ1】SSLサーバー証明書の申し込みと秘密鍵の作成
【ステップ2】中間CA証明書とSSLサーバー証明書の入手
【ステップ3】ファイル形式の変換
前提条件
本記事では、下表のファイル名を使用します。ファイル名は、自身の環境に合わせて置き換えてください。
証明書の種類 | ファイル名 |
---|---|
中間CA証明書 | ca.crt |
SSLサーバー証明書(DER形式) | srv0.der |
SSLサーバー証明書(PEM形式) | srv.crt |
秘密鍵(DER形式) | sec0.der |
秘密鍵(PEM形式) | sec.key |
PFX形式のファイル | ssl.pfx |
【ステップ1】SSLサーバー証明書の申し込みと秘密鍵の作成
中間認証局にSSLサーバー証明書を申し込みます。手順は各認証局のホームページを参照します。
申し込みの際に、公開鍵と秘密鍵を作成します。このとき作成した公開鍵はSSLサーバー証明書に組み込まれ、秘密鍵とペアで使うことになります。秘密鍵は紛失や流出に十分注意したうえで管理します。
認証局を選ぶ際は、下記の点を考慮する必要があります。
- 申し込み~発行までにかかる期間
- 初期コスト・ランニングコスト
- 複数サイトの対応が必要な場合
- マルチドメイン証明
- ワイルドカード証明の対応有無
- 検証目的である場合(実在性や安全性の担保は不要)
- 無償提供されるもの
- 独自の自己署名証明書を作成
【ステップ2】中間CA証明書とSSLサーバー証明書の入手
中間認証局による審査が終わると、SSLサーバー証明書が発行されます。
案内に従い、中間CA証明書とSSLサーバー証明書をダウンロードします。
中間CA証明書に関する案内がない場合は、中間認証局のホームページなどから入手方法を確認します。
【ステップ3】中間CA証明書、SSLサーバー証明書、秘密鍵のファイル形式変換
中間CA証明書とSSLサーバー証明書に加えて、SSLサーバー証明書の発行時に作成した秘密鍵を用意します。これらをPFX形式*1に変換します。
PFX形式とは、中間CA証明書、SSLサーバー証明書、秘密鍵を1つのファイルに格納することができるファイル形式です。
ファイル形式変換手順には、大きく以下の作業があります。
【ステップ3-1】環境準備
【ステップ3-2】ファイル形式の変換
【ステップ3-3】PFX形式のファイルの内容確認
【ステップ3-1】環境準備
(1)OpenSSLが使用できる端末(作業端末)を準備します。
Windows端末でOpenSSLを使用する手順は、以下のサイトに手順が詳しく説明されています。
【Windows 11対応】WindowsにOpenSSLをインストールして証明書を取り扱う(Ver. 1.1.1編):Tech TIPS(1/2 ページ) - @IT
(2)作業端末に中間CA証明書、SSLサーバー証明書、および秘密鍵を配置します。
(3)SSLサーバー証明書と秘密鍵をテキストファイルで開き、証明書ファイルの情報を確認します。
テキストファイルで開けるかどうかで、この後参照する手順が異なります。
- テキストファイルで開くことができない場合(文字化けする、バイナリ形式である場合)
- ファイル形式はDER形式
- (3-1)に進む
- テキストファイルで開くことができる場合
- ファイル形式はPEM形式
- (3-2)に進む(3-1はスキップ)
PEM形式とDER形式は、どちらも証明書ファイルのエンコードの種類です。PEM形式はテキストファイルであり、DER形式はバイナリファイルです。
ファイル形式を変換するには、SSLサーバー証明書と秘密鍵がPEM形式である必要があります。DER形式である場合は、PEM形式に変換する必要があります。
(3-1)作業端末で以下のコマンドを実行し、SSLサーバー証明書と秘密鍵をDER形式からPEM形式に変換します。
まず、SSLサーバー証明書をDER形式からPEM形式に変換します。
openssl x509 -inform der -in [DER形式のSSLサーバー証明書] -out [PEM形式のSSLサーバー証明書(任意のファイル名)]
以下は実際のコマンドと実行結果です。
openssl x509 -inform der -in srv0.der -out srv.crt
続いて、秘密鍵をDER形式からPEM形式に変換します。
openssl rsa -in [DER形式の秘密鍵] -inform der -out [PEM形式の秘密鍵(任意のファイル名)]
以下は実際のコマンドと実行結果です。
openssl rsa -in sec0.der -inform der -out sec.key
変換後のSSLサーバー証明書と秘密鍵のファイルがテキストファイルで開けることを確認し、(3-2)に進みます。
(3-2)SSLサーバー証明書と秘密鍵(PEM形式)の情報が正しいことを、以下の手順で確認します。
まず、SSLサーバー証明書をテキストファイルで開き、行頭が「-----BEGIN CERTIFICATE-----」
、行末が「-----END CERTIFICATE-----」
であることを確認します。
続いて、秘密鍵をテキストファイルで開き、行頭が「-----BEGIN PRIVATE KEY-----」
、行末が「-----END PRIVATE KEY-----」
であることを確認します。
SSLサーバー証明書と秘密鍵の情報が正しいことを確認し、【ステップ3-2】に進みます。
【ステップ3-2】ファイル形式の変換
作業端末で以下のコマンドを実行し、中間CA証明書、SSLサーバー証明書、秘密鍵をPFX形式に変換します。
コマンド実行後にパスワードの入力を求められるので、強固なパスワードを入力します。パスワードは後続の手順でも使うため、手元に控えておきます。
openssl pkcs12 -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -export -inkey [秘密鍵] -certfile [中間CA証明書] -in [SSLサーバー証明書] -out [PFX形式のファイル(任意のファイル名)]
以下は実際のコマンドと実行結果です。
openssl pkcs12 -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -export -inkey sec.key -certfile ca.crt -in srv.crt -out ssl.pfx
【ステップ3-3】PFX形式のファイルの内容確認
作業端末で以下のコマンドを実行し、PFX形式のファイルの内容を出力します。コマンド実行後にパスワードの入力を求められるので、【ステップ3-2】で指定したパスワードを入力します。
openssl pkcs12 -info -in [PFX形式のファイル] -noout
以下は実際のコマンドと実行結果です。
openssl pkcs12 -info -in ssl.pfx -noout
出力結果に以下の内容が含まれることを確認します。
- 「PKCS7 Encrypted data」の下に「Certificate bag」が2行表示される
- このファイルにSSLサーバー証明書と中間CA証明書が含まれることを意味します
- 「PKCS7 Data」の下に「Shrouded Keybag」が1行表示される
- このファイルに秘密鍵が含まれることを意味します。
以上ですべての手順は終了です。
補足情報
本記事に関する補足情報です。
証明書ファイルと拡張子
証明書ファイルはエンコードの種類でPEM形式とDER形式に分けることができます。また、中間CA証明書、サーバー証明書、および秘密鍵はPEM形式からPFX形式に変換することができます。
いずれのファイルも拡張子は標準化されておらず、さまざまな拡張子のファイルが存在します。
参考として、各証明書によく使われる拡張子を下表にまとめます*2。
証明書ファイル | エンコードの種類 | よく使われる拡張子 |
---|---|---|
SSLサーバー証明書 | PEM | .pem / .crt / .cer |
DER | .der / .crt / .cer | |
秘密鍵 | PEM | .pem / .key |
DER | .der / .key | |
中間CA証明書 | PEM | .pem / .crt / .cer |
SSLサーバー証明書・秘密鍵・中間CA証明書(PFX形式) | PEM | .pem / .pfx / .p12 |
エンコードの種類や拡張子については、以下のサイトでも詳しく説明されています。
SSLの各種証明書について(csr, pem, der, cerなど) #SSL - Qiita
RSA鍵、証明書のファイルフォーマットについて #OpenSSL - Qiita
PFX証明書に変換する理由
【ステップ3】では、中間CA証明書、SSLサーバー証明書、秘密鍵をPFX形式に1つのファイルに格納しました。
ファイル形式を変換せず、個別ファイルのままサーバーにインストールする方法もあります。しかし1つのファイルにまとめることで、中間CA証明書のインストール漏れを防ぐことにつながります。
また、アプリケーションやロードバランサーなどの要件でPFX形式が指定されることがあります。そのため、本記事ではPFX形式への変換を必須手順としています。
OpenSSLコマンドとオプションの意味
本記事で紹介したOpenSSLコマンドについて説明します。それ以外のコマンドや出力結果については、以下のサイトでも詳しく説明されています。
PKCS #12 個人情報交換ファイルフォーマットについて #OpenSSL - Qiita
【コマンド1】DER->PEM(SSLサーバー証明書)
openssl x509 -inform der -in srv0.der -out srv.crt
- x509
- 証明書ファイル(SSLサーバー証明書、中間CA証明書など)を操作する際に使用します
- -inform
- 読み込むファイルのエンコードの種類を指定します
【コマンド2】DER->PEM(秘密鍵)
openssl rsa -in sec0.der -inform der -out sec.key
- rsa
- 鍵ファイル(公開鍵、秘密鍵など)を操作する際に使用します
- -inform
- 読み込むファイルのエンコードの種類を指定します
【コマンド3】PEM->PFX
openssl pkcs12 -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -export -inkey sec.key -certfile ca.crt -in srv.crt -out ssl.pfx
- pkcs12
- PFX形式のファイルを操作する際に使用します
- -certpbe
- SSLサーバー証明書の暗号化アルゴリズムを指定します
- -keypbe
- 秘密鍵の暗号化の暗号化アルゴリズムを指定します
本記事では、暗号化アルゴリズムに「PBE-SHA1-3DES」を指定しました。証明書をインストールする際、暗号化アルゴリズムに制限や要件がある場合があるので注意が必要です。
例として、一部のWindows Serverで暗号化アルゴリズム「AES256-SHA256」による証明書ファイルは使用できません。
AES256-SHA256 で暗号化された PFX 証明書をインポートできません - Windows Server | Microsoft Learn
Windows標準コマンドでPFX形式のファイルを確認
Windows端末では、OpenSSLを使わず標準コマンドからPFX形式のファイルの内容を確認することが可能です。
コマンドプロンプトから以下のコマンドを実行します。コマンド実行後にパスワードの入力を求められるので、【ステップ3-2】で指定したパスワードを入力します。
certutil -dump [PFX形式のファイル]
以下は実際のコマンドと実行結果です。
certutil -dump ssl.pfx
図の出力結果から、以下の内容がわかります。
- 「== Certificate 0 ==」
- Issuer(発行者)が「GlobalSign Root CA - R3」、Subject(発行先)が「GlobalSign nv-sa」の中間CA証明書です
- 行末の「No key provider information」は、鍵情報を含まないことを意味します
- 「== Certificate 1 ==」
- Issuer(発行者)が「GlobalSign nv-sa」のSSLサーバー証明書です
- Subject(発行先)はSSLサーバー証明書の申し込み時に入力した情報です
- 行末の「Encryption test passed」は、公開鍵と秘密鍵による暗号化と複合化が実行できたことを意味します
おわりに
本記事では、証明書をサーバーにインストールするための事前準備をしました。
次回は、実際に証明書をサーバーにインストールする予定です。
山﨑 優美(日本ビジネスシステムズ株式会社)
ハイブリッドクラウド本部に所属。Windows Server・Linux、どちらのOSでもさわれるインフラエンジニアです。3児のママも兼務しています。
担当記事一覧