公開鍵と秘密鍵の概要

公開鍵と秘密鍵は、非対称暗号化としても知られています。 この暗号化は、公開鍵と秘密鍵を作成するように数学的に構成されています。 公開鍵は既知であり、多くの人に開示されますが、秘密鍵は鍵の所有者にのみ知られています。 通常、公開鍵は、セッション鍵の暗号化、デジタル署名の検証、または一致する秘密鍵で復号可能なデータの暗号化に使用されます。

どちらの鍵も比較的使用され、暗号化に公開鍵を使用する場合は、復号化にも一致する秘密鍵を使用する必要がある (およびその反対) ことを意味します。 このプロセスに従わない場合、復号化に失敗します。

デジタル証明書の仕組み

デジタル証明書は、公開鍵暗号化システム (暗号化と復号化用の一致する鍵ペア) を使用します。 各ユーザーは、復号化用の秘密鍵 (安全性が高く、誰にも公開されません) を作成します。 ユーザーはそれにデジタル署名し、公開鍵を作成し、それをユーザーグループに公開して暗号化と署名の検証プロセスを完了します。

デジタル署名は、鍵の所有者によって検証されたドキュメント上に生成され、他人が生成することはできません。

デジタル証明書は、公開鍵に関する情報と公開鍵の所有者の ID に関する情報が含まれた CA (認証局) によってデジタル署名されたドキュメントです。 最も単純な証明書には、公開鍵、名前、および認証局のデジタル署名が含まれます。 デジタル証明書は特定の期間有効です。

秘密鍵の作成方法

Alibaba Cloud 証明書サービスには、暗号化アルゴリズムと秘密鍵の長さを生成する際に次の制限があります。

  • アルゴリズムは RSA である必要があります。
  • 長さは 2,048 ビット以上である必要があります。
2,048 ビットで SHA256 ダイジェストアルゴリズムの使用を推奨します。

次の方法のいずれかを使用して秘密鍵を作成します。

OpenSSL を使用して秘密鍵を生成

OpenSSL は、安全な通信のための強力かつ広く使用されているライブラリツールです。 最新の OpenSSL インストールパッケージを 『http://www.openssl.org/source/』 からダウンロードします。
OpenSSL バージョン 1.0.1g 以降が必要です。

OpenSSL をインストールしたら、コマンドラインモードで openssl genrsa -out myprivate.pem 2048 を実行して秘密鍵を生成します。

  • myprivate.pem が秘密鍵です。
  • 2,048 は暗号化の長さを示します。

Keytool を使用して秘密鍵をエクスポート

Keytool は、JDK とともにインストールされる鍵管理ツールです。 キーストア (JKS) 形式に基づいて証明書を作成します。 Java SE Downloads から JDK をダウンロードするときに Keytool を入手します。

デフォルトでは、Keytool を使用して作成した公開鍵と秘密鍵はエクスポートされません。 したがって、作成済みの .keystore ファイルから秘密鍵をエクスポートする必要があります。 「デジタル証明書で使用される主流の形式」をご参照ください。

エクスポートされたファイルには、ファイルのセクションが次の例のいずれかに似ている場合に秘密鍵が表示されます。

-----BEGIN RSA PRIVATE KEY-----
......
-----END RSA PRIVATE KEY-----
または

-----BEGIN PRIVATE KEY-----
......
-----END PRIVATE KEY-----
秘密鍵のプライバシーとセキュリティは必ず維持する必要があります。 秘密鍵を失くしたり、破損したりすると、リクエストに対応する公開鍵とデジタル証明書を使用できなくなります。