第2章 TLS 鍵および証明書の作成と管理
OpenSSL や GnuTLS などのツールキットを使用して、TLS 秘密鍵と証明書を作成および管理します。セキュアな通信を実現するために、これらのアセットを適切に設定することが重要です。
2.1. TLS 証明書 リンクのコピーリンクがクリップボードにコピーされました!
TLS (Transport Layer Security) は、クライアント/サーバーアプリケーション間で暗号化されたデータ交換を確立するプロトコルです。TLS は、公開鍵と秘密鍵のペアのシステムを使用して、クライアントとサーバー間で送信される通信を暗号化します。TLS は、SSL (Secure Sockets Layer) の後継プロトコルです。
TLS は、X.509 証明書を使用して、ホスト名や組織などの ID を、デジタル署名を使用する公開鍵にバインドします。X.509 は、公開鍵証明書の形式を定義する標準です。
セキュアなアプリケーションの認証は、アプリケーションの証明書の公開鍵値の整合性によって異なります。攻撃者が公開鍵を自身の公開鍵に置き換えると、実際のアプリケーションになりすましてセキュアなデータにアクセスできるようになります。この種の攻撃を防ぐには、すべての証明書が証明局 (CA) によって署名されている必要があります。CA は、証明書の公開鍵値の整合性を確認する信頼できるノードです。
CA はデジタル署名を追加して公開鍵に署名し、証明書を発行します。デジタル署名は、CA の秘密鍵でエンコードされたメッセージです。CA の公開鍵は、CA の証明書を配布することによって、アプリケーションで使用できるようになります。アプリケーションは、CA の公開鍵を使用して CA のデジタル署名をデコードして、証明書が有効で署名されていることを確認します。
CA によって署名された証明書を取得するには、公開鍵を生成し、署名のために CA に送信する必要があります。これは、証明書署名要求 (CSR) と呼ばれます。CSR には、証明書の識別名 (DN) も含まれています。どちらのタイプの証明書にも提供できる DN 情報には、国を表す 2 文字の国コード、州または県の完全な名前、市または町、組織の名前、メールアドレスを含めることも、空にすることもできます。現在の商用 CA の多くは、Subject Alternative Name 拡張を好み、CSR の DN を無視します。
RHEL には、TLS 証明書を操作するための 2 つの主要なツールキット (GnuTLS と OpenSSL) が含まれています。openssl パッケージの openssl ユーティリティーを使用すると、証明書を作成、読み取り、署名、検証できます。gnutls-utils パッケージに含まれる certtool ユーティリティーも同じ操作を実行しますが、使用する構文とバックエンドライブラリー群が異なります。詳細は、システム上の openssl(1)、x509(1)、ca(1)、req(1)、および certtool(1) man ページを参照してください。