概要
この記事は、Cisco [ACI]を使用する際に HTTPS アクセスのカスタム証明書を設定する方法の例を示します。
この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
この章は、次の項で構成されています。
この記事は、Cisco [ACI]を使用する際に HTTPS アクセスのカスタム証明書を設定する方法の例を示します。
[Cisco Application Policy Infrastructure Controller] ([APIC])で証明書署名要求(CSR)を生成するために使用される秘密キーのエクスポートはサポートされていません。[サブジェクト代替名(SAN)(Subject Alternative Name(SAN))]フィールドのワイルドカード(「* cisco.com」など)を使用し、証明書の CSR を生成するために使用された秘密キーを共有することにより、複数のサーバーで同じ証明書を使用する場合は、秘密キーを [Cisco アプリケーション セントリック インフラストラクチャ(Cisco Application Centric Infrastructure)] ([ACI])ファブリックの外部に配置し、 [Cisco ACI] ファブリックにインポートします。
証明書署名要求(CSR)を生成する前に、公開中間証明書とルート CA 証明書をダウンロードしてインストールする必要があります。ルート CA 証明書は技術的には CSR を生成するために必要ではありませんが、シスコでは、対象とする CA 機関と CSR への署名に使用される実物の間の不一致を防ぐために、CSR を生成する前にルート CA 証明書を要求しています。 [Cisco APIC] は、送信された証明書が設定された CA によって署名されていることを確認します。
更新された証明書の生成に同じ公開キーと秘密キーを使用するには、次のガイドラインを満たす必要があります。
元の CSR にはキー リング内の秘密キーとペアになる公開キーが含まれているため、元の CSR を維持する必要があります。
[Cisco APIC]で公開キーと秘密キーを再使用する場合は、元の証明書に使用されたものと同じ CSR を更新された証明書に再送信する必要があります。
更新された証明書に同じ公開キーと秘密キーを使用する場合は、元のキー リングを削除しないでください。キー リングを削除すると、CSR で使用されている関連秘密キーが自動的に削除されます。
[Cisco ACI マルチサイト(Cisco ACI Multi-Site)]、VCPlugin、VRA、および SCVMM は、証明書ベースの認証ではサポートされません。
1つの SSL 証明書のみが [Cisco APIC] クラスターごとに許可されます。
リリース 4.0(1) にそれより後のリリースからダウングレードする場合には、その前に、証明書ベースの認証を無効にする必要があります。
証明書ベースの認証セッションを終了するには、ログアウトして CAC カードを削除する必要があります。
[Cisco APIC] に設定されたカスタム証明書は、リーフ スイッチとスパイン スイッチに展開されます。ファブリック ノードへの接続に使用される URL または DN が [サブジェクト(Subject)] または [Subject Alternative Name(サブジェクトの代替名)] フィールドに含まれていると、ファブリック ノードは証明書の下でカバーされます。
[Cisco APIC] GUI は、最大サイズが 4k バイトの証明書を受け入れることができます。
HTTPS アクセスに使用している自己署名 SSL 証明書の有効期限が切れると、証明書は自動的に更新されます。
SSL 暗号は、有効化、無効化、または完全に削除できます。必要な暗号設定に応じて、必要な正確な組み合わせを理解する必要があります。暗号が残らない方法で暗号を無効化および有効化することは設定ミスであり、NGINX の検証に失敗します。
NGINX は OpenSSL 暗号リスト形式を使用します。形式については、OpenSSL Web サイトにアクセスしてください。
暗号を有効にすると、その暗号が NGINX 構成ファイルに書き込まれます。暗号を無効にすると、その暗号が NGINX 構成ファイルに前に感嘆符 (!) を付けて書き込まれます。たとえば、「EEDCH」を無効にすると、「!EEDCH」と書き込まれます。暗号を削除すると、その暗号が NGINX 構成ファイルに暗号がまったく書き込まれなくなります。
![]() (注) |
OpenSSL 暗号リスト形式のドキュメントには次のように記載されています。「 (!) が使用されている場合、暗号はリストから完全に削除されます。削除された暗号は、明示的に指定されていても、リストに再び表示されることはありません」これにより、暗号の「有効」状態に関係なく、「無効」に設定された暗号を参照する組み合わせ暗号が削除される可能性があります。 例:「EEDCH」を無効にし、「EECDH+aRSA+SHA384」を有効にします。これにより、次が NGINX 構成ファイルに書き込まれます:「!EEDCH:EECDH+aRSA+SHA384」。「!EEDCH」は、「EECDH+aRSA+SHA384」が追加されないようにします。これにより、暗号が使用されないことで NGINX 検証に失敗するため、NGINX の更新(カスタム HTTPS 証明書の適用など)が成功しなくなります。 |
暗号の変更を [Cisco Application Policy Infrastructure Controller] ([APIC])に加える前に、 openssl ciphers -V 'cipher_list' コマンドを使用して、計画された暗号の組み合わせの結果を検証し、暗号出力が目的の結果と一致することを確認します。
例:
apic# openssl ciphers -V 'EECDH+aRSA+SHA256:EECDH+aRSA+SHA384'
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
テストした暗号リストがエラーまたは「暗号が一致しません(no cipher match)」という結果になった場合は、この設定を [Cisco APIC]に適用しないでください。適用すると、NGINX の結果で問題が生じます。それには [Cisco APIC] GUI にアクセスできなくなることや、カスタム証明書アプリケーションの破損が含まれます。
例:
apic# openssl ciphers -V '!EECDH:EECDH+aRSA+SHA256:EECDH+aRSA+SHA384'
Error in cipher list
132809172158128:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:ssl_lib.c:1383:
![]() 注意 |
ダウンタイムの可能性があるため、メンテナンス時間中にのみこのタスクを実行してください。 |
ダウンタイムは、外部ユーザーまたはシステムから [Cisco Application Policy Infrastructure Controller] ([APIC])クラスターやスイッチへのアクセスに影響します。 [Cisco APIC] からスイッチへの接続には影響しません。スイッチで実行されている NGINX プロセスのため、外部接続にも影響が及びますが、ファブリックのデータ プレーンには影響ありません。 [Cisco APIC]へのアクセス、設定、管理、トラブルシューティングなどへのアクセスは影響を受けることになります。 [Cisco APIC] で実行されている NGINX Web サーバーおよびスイッチは、この操作中に再起動します。
適切な認証局を作成できるように、信頼できる証明書を取得する機関を決定します。
|
ステップ 1 |
メニュー バーで をクリックします。 |
||
|
ステップ 2 |
[ナビゲーション(Navigation)] ペインで、 [セキュリティ(Security)]を選択します。 |
||
|
ステップ 3 |
[作業(Work)] ペインで、 を選択します。 |
||
|
ステップ 4 |
[認証局の作成(Create Certificate Authority)] 画面の [名前(Name)] フィールドに、認証局の名前を入力します。 |
||
|
ステップ 5 |
(オプション)認証局の [説明(Description)] を入力します。 |
||
|
ステップ 6 |
証明書チェーン (Certificate Chain) フィールドで、 [Cisco APIC]の証明書署名要求(CSR)に署名する認証局の中間証明書とルート証明書をコピーします。 証明書は、Base64 エンコード X.509 CER(Cisco Emergency Responder)フォーマットである必要があります。中間証明書はルート CA 証明書の前に配置されます。次の例のようになります:
|
||
|
ステップ 7 |
[保存(Save)]をクリックします。 |
||
|
ステップ 8 |
[作業(Work)] ペインで、 を選択します。 [キー リング(Key Rings)] では、以下を管理できます:
|
||
|
ステップ 9 |
[キー リングの作成(Create Key Ring)] ダイアログ ボックスで [名前(Name)] フィールドに、名前を入力します。 |
||
|
ステップ 10 |
(オプション)キー リングの [説明(Description)] に、キー リングの説明を入力します。 |
||
|
ステップ 11 |
[認証局(Certificate Authority)] フィールドで、 [認証局の選択(Select Certificate Authority)] をクリックして、以前に作成した認証局を選択するか、 [認証局の作成(Create Certificate Authority)]をクリックします。 |
||
|
ステップ 12 |
[秘密キー(Private Key)] フィールドで必要なラジオボタンを選択します。
|
||
|
ステップ 13 |
秘密キーを入力します。このオプションは、 [既存キーのインポート(Import Existing Key)] オプション( [秘密キー(Private Key)])を選択した場合にのみ表示されます。 |
||
|
ステップ 14 |
[キー タイプ(Key Type)] に対して必要なラジオ ボタンを選択します。これは、 [新しいキーの生成(Generate New Key)] オプションを [秘密キー(Private Key)] フィールドで選択した場合に当てはまります。
|
||
|
ステップ 15 |
[証明書(Certificate)] フィールドには、その内容を追加しないでください。これは [Cisco APIC] を使用し、キーリングを介して CSR を生成することが必要な場合に当てはまります。すでに、秘密キーと CSR を [Cisco APIC]の外部で生成することにより、前の手順で CA によって署名された署名済み証明書の内容がある場合には、それを [証明書(Certificate)] フィールドに追加できます。 |
||
|
ステップ 16 |
暗号に必要なキー強度を選択します。このオプションは、 [秘密キー(Private Key)] フィールドで、[新しいキーの生成(Generate New Key)] オプションを選択した場合にのみ表示されます。 [モジュラス(Modulus)] ドロップダウン リストから(RSA)、 または [ECC 曲線(ECC Curve)] ラジオ ボタンで(ECC)、 [キー タイプ(Key Type)]を選択します。
|
||
|
ステップ 17 |
[保存(Save)] ([キー リングの作成(Create Key Ring)] 画面)をクリックします。 |
||
|
ステップ 18 |
[作業(Work)] ペインで、 を選択します(または、必要なキー リングの行をダブルクリックすることもできます)。 署名付き証明書と秘密キーを入力していない場合は、 [作業(Work)] ペインの [キー リング(Key Rings)] エリアに、作成されたキー リングの [管理状態(Admin State)] が [開始(Started)]と表示されます。これはユーザーが CSR が生成されるのを待っていることを示します。手順 19 に進みます。 署名付き証明書と秘密キーの両方を入力した場合は、 [キー リング(Key Rings)] エリアに、作成されたキー リングの [管理状態(Admin State)] が [完了(Completed)]と表示されます。手順 22 に進みます。
展開ボタンをクリックすると、新しい画面に選択したキーリングが表示されます。 |
||
|
ステップ 19 |
[証明書要求(Certificate Request)] ペインで、 [証明書リクエストを作成(Create Cerrificate Request)]をクリックします。 [証明書のリクエスト(Request Certificate)] ウィンドウが表示されます。 |
||
|
ステップ 20 |
[証明書要求の設定(Certificate Request Settings)] ペインに、上で入力した情報が表示されます(手順 19)。 |
||
|
ステップ 21 |
[作業(Work)] ペインで、 を選択します(または、必要なキー リングの行をダブルクリックすることもできます)。 選択した [キー リング(Key Rings)] を含む新しい画面が、証明書の詳細とともに表示されます。
キーが正常に確認されると、 [作業(Work)] ペインの [管理状態(Admin State)] が [完了(Completed)] に変わり、これで、 HTTPポリシーで使用する準備が整います。 |
||
|
ステップ 22 |
メニュー バーから を選択します。 |
||
|
ステップ 23 |
[ナビゲーション(Navigation)] ペインで、 をクリックします。 |
||
|
ステップ 24 |
[作業(Work)] ペインの [管理キーリング(Admin Key Ring)] ドロップダウン リストから、目的のキーリングを選択します。 |
||
|
ステップ 25 |
(オプション)証明書ベースの認証の場合は、 [クライアント証明書 TP(Client Certificate TP)] ドロップダウンリストで、以前に作成したローカルユーザーポリシーを選択し、 [有効(Enabled)] をクリックします( [クライアント証明書の認証状態(Client Certificate Authentication state)])。 |
||
|
ステップ 26 |
[送信(Submit)]をクリックします。 |
証明書の失効日には注意し、期限切れになる前に必要な措置を取ってください。更新された証明書に同じキー ペアを保持するには、CSR を保持します。CSR にはキーリング内の秘密キーとペアになる公開キーが含まれています。証明書が期限切れになる前に、同じ CSR を再送信してください。削除したり、新しいキーリングを作成したりしないでください。キーリングを削除すると、 [Cisco APIC]に保存されている秘密キーが削除されます。
この手順では、デフォルトの SSL プロトコルと Diffie-Hellman キー交換を構成します。これらのパラメータは、組織のセキュリティポリシーと、使用するアプリケーションのニーズに基づいて構成する必要があります。
|
ステップ 1 |
メニュー バーで、 を選択します。 |
|
ステップ 2 |
[ナビゲーション(Navigation)] ペインで、 を選択します。 |
|
ステップ 3 |
[作業(Work)] ペインで、 [HTTPS] セクションに移動します。 |
|
証明書ベースの認証を有効にするには、次の手順を実行します。 例:
|
Cisco Application Centric Infrastructure(ACI)Representational State Transfer(REST)アプリケーション プログラミング インターフェイス(API)は、ソリューションがデビューした日から、HTTPS/SSL/TLS サポートがますます厳しくなる最近のバージョンへと進化を遂げました。このドキュメントは、Cisco ACI REST API での HTTPS、SSL、および TLS サポートの進化について説明し、クライアントが REST API を安全に利用するために必要なものに関するガイドを顧客に提供することを目的としています。
HTTPS は、Secure Socket Layers(SSL)または Transport Layer Security(TLS)のいずれかを利用して、HTTP セッションの安全な接続を形成するプロトコルです。SSL または TLS は、クライアントと HTTP サーバ間のトラフィックを暗号化するために使用されます。さらに、HTTPS をサポートするサーバーには、サーバーの信頼性を検証するためにクライアントが通常使用できる証明書があります。これは、サーバーで認証するクライアントの反対です。この場合、サーバーは「私は server_xyz です。それを証明する証明書はここにあります」と言っています。その後、クライアントはその証明書を利用して、サーバーが「server_xyz」であることを確認できます。
SSL/TLS には、SSL または TLS プロトコルの固有のセキュリティだけでなく、各プロトコルで使用可能なサポートされている暗号化方式も関係する、他の重要な側面があります。SSL は、SSLv1、SSLv2、SSLv3 の 3 回の反復を経て、現在ではすべて安全ではないと見なされています。TLS は、TLSv1、TLSv1.1、および TLSv1.2 の 3 つの反復を経ており、そのうち TLSv1.1 と TLSv1.2 のみが「安全」と見なされています。理想的には、クライアントは利用可能な最高の TLS バージョンを利用し、サーバーは TLSv1.1 と TLSv1.2 のみをサポートする必要があります。ただし、ほとんどのサーバは、古いクライアントに対して TLSv1 を保持する必要があります。
ほぼすべての最新のブラウザで、TLSv1.1 と TLSv1.2 の両方をサポートしています。ただし、HTTPS を使用するクライアントはブラウザではない場合があります。クライアントは、Web サーバーと通信し、HTTPS/TLS をネゴシエートする必要がある Java アプリケーションまたは Python スクリプトである場合があります。このような状況では、何をどこでサポートするかという問題がより重要になります。
このセクションでは、CLI を使用して、サポートされている SSL 暗号を判別する方法について説明します。
|
ステップ 1 |
次に示されているように、OpenSSL 環境でサポートされている暗号を取得します。 例:
|
||
|
ステップ 2 |
次に示されているように、sed またはその他のツールを使用して暗号を分離します。 例:
|
||
|
ステップ 3 |
次のように、暗号をループし、APIC をポーリングして、サポートされている暗号を確認します。 例:
次の暗号の例を参照してください。 例:
|