ベストプラクティス 06-10-2015

あなたの秘密鍵はどこにありますか?

Jeremy Rowley
blog-card-images

最終更新日:2020年11月

証明書の有効期間は短くなりましたが、ほとんどのIT担当者は、TLS/SSLの設定を頻繁に変更することはありません。多くの人は、1年に1回程度、証明書の変更が必要なときに鍵の問題に直面します。しかし証明書や秘密鍵の管理は難しく、これらの資料がどこにあるのかを探すことさえ、時間がかかってしまうことがあります。この記事では、秘密鍵を見つけるための手順をご説明します。これから最も一般的なOSについて説明しますが、その前に、秘密鍵についての基本的な説明をします。

秘密鍵とは何ですか?

すべてのTLS証明書が機能するには、秘密鍵が必要です。秘密鍵は、あなたのサーバと接続しているクライアントの間で送信されるデータの暗号化/復号化に使用される個別のファイルです。秘密鍵は、証明書署名リクエスト(CSR) によって証明書を要求する時に、証明書の所有者によって作成されます。デジサートのような証明書を提供する認証局(CA)は、あなたの秘密鍵を作成したり、保持したりしません。実際、管理者以外の人がこのファイルにアクセスしてはいけません。管理者が鍵をGitHubなどのオンラインリポジトリに投稿したために、認証局が証明書を失効させなければならなくなったという事例が増えています。そのサイトが機密情報を扱っているとは思えなくても、秘密鍵が漏洩した場合、対応するすべての証明書を失効させなければなりません。 まだ証明書をインストールしていない場合、秘密鍵の保管場所として最も可能性が高いのは、鍵ペアとCSRを生成したコンピュータまたはサーバです。鍵ペアを生成する際に、公開鍵を含むファイルと秘密鍵を含むファイルの2つを保存しました。OpenSSLの場合、openssl version -aというコマンドを実行すると、秘密鍵ファイルが保存されているフォルダを見つけることができます(デフォルトでは/usr/local/ssl)。Windows(IIS)では、OSがCSRを管理してくれます。まずリクエストを完了させてから、秘密鍵をエクスポートします(手順は以下のとおり)。

秘密鍵の入手方法

証明書がすでにインストールされている場合は、以下の手順に従って、これらの一般的なオペレーティングシステム用の秘密鍵ファイルを探してください。

Apache

秘密鍵ファイルの場所は、Apacheのメイン設定ファイルであるhttpd.confまたはapache2.confから参照されます。 SSLCertificateKeyFile の指示は、秘密鍵が保存されているサーバ上のパスを指定します。

Apacheで最も普及しているSSLライブラリであるOpenSSLは、デフォルトで秘密鍵を /usr/local/sslに保存します。 openssl version -aというコマンドを実行してOPENSSLDIRを調べ、サーバーが秘密鍵を保存しているフォルダを確認することができます。

Nginx

秘密鍵の場所は、あなたのサイトのバーチャルホストファイルの中にあります。そのサイトのサーバブロック(デフォルトでは、/var/www/ディレクトリ内)に移動します。サイトのメイン設定ファイルを開き、ssl_certificate_key の指示を探し、秘密鍵のファイルパスを指定します(ssl.confのようなSSL用の別の設定ファイルを持つユーザーもいます)。

Windows (IIS)

Windowsサーバでは、OSが隠しフォルダーで証明書ファイルを管理していますが、証明書と秘密鍵を含む「.pfx」ファイルをエクスポートすることで、秘密鍵を取り出すことができます。

Microsoft Management Console (MMC) を開きます。コンソールルートで「Certificates (Localコンピュータ)」を展開します。サーバ証明書は、「Personal」または「ウェブサーバ 」のサブフォルダーにあります。コモンネームで示される証明書を探して右クリックし、「エクスポート」を選択して、案内されるウィザードに従います。これで「.pfx」ファイルが作成できます。詳しい手順は、こちらをご覧ください。

D秘密鍵の処理内容によっては、「.pfx」ファイルを変換して秘密鍵を別のファイルに分割する必要があります。秘密鍵をバックアップしたり、別のWindowsサーバにインストールする場合は、すでに適切なフォーマットになっています。Apacheなどの他のプラットフォームで使用する場合は、OpenSSLで「.pfx」ファイルを変換して、「.crt/.cer」と「.key」ファイルに分離する必要があります。

この方法で秘密鍵が見つからない場合は、 DigiCert SSL Utilityをダウンロードしてみてください。このソフトウェアは、証明書をインポートし、秘密鍵がそのサーバにある場合は自動的に見つけることができます。なお、これはオンプレミスのソフトウェアであり、秘密鍵の材料に関する情報をデジサートに共有するものではありません。デジサートは、TLS 証明書のための秘密鍵の材料を取得することはありません。また、認証局によるTLS鍵の仲介(文書署名や S/MIME 証明書で時々発生します)は、ルートストアのポリシーで厳しく禁止されています。

他にどこが考えられるでしょうか?

OSの手順に従っても秘密鍵が見つからない場合は、探している場所が間違っている可能性があります。

HTTPS 接続が機能しているサーバを使用している場合、秘密鍵はそのサーバのどこかにある(またはそのサーバーにアクセスできる)はずで、そうでなければ HTTPS 接続は失敗します。ここでは、一般的なシナリオについてのみ説明しますが、お客様の組織では独自の構成を使用している可能性があります。サーバーで「.key」ファイルを検索したり、新しい証明書をインストールする際の手順を確認してみてください。

一部のプラットフォームでは、OpenSSLは-reqコマンドを実行した時と同じディレクトリに「.key」ファイルを保存します。 まだ証明書をインストールしていないのに秘密鍵が見つからない場合は、なくなっている可能性があります。CSRを作成したものの、秘密鍵ファイルが見つからない場合、最も簡単な方法は証明書を再発行することです。まず、新しいCSRを作成し、秘密鍵は必ず既知の場所に保存し、証明書とその新しい秘密鍵をペアにします。デジサートなら、再発行はいつでも無料です。 秘密鍵の材料をどこでどのように保護しているかを把握することはセキュリティ上、重要ですが、新しい証明書を注文するたびに新しい鍵ペアを生成することを強くお勧めします。秘密鍵の素材を再利用することは好ましくない行為であり、秘密鍵が漏洩した場合には広範囲に問題が発生し、新たな脅威が発見された場合にはセキュリティフレームワークが貧弱になる可能性があります。秘密鍵の材料とCSRの生成はこれまで以上に簡単で、デジサートは、頻繁な秘密鍵の入れ替えをサポートし、企業が適切なセキュリティ対策を導入するできるようにします。
UP NEXT
5 Min

特集記事

クラウド上で量子コンピュータをいかに保護するか

NIST PQC アルゴリズムに関する詳細な説明

従来の PKI がもたらす割高な機会損失