はじめに
このドキュメントでは、AireOS WLCで証明書を生成およびインポートする方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- 基本動作用に WLC、Lightweight アクセス ポイント(LAP)、およびワイヤレス クライアント カードを設定する方法.
- OpenSSL アプリケーションを使用する方法.
- 公開キー インフラストラクチャとデジタル証明書
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- ファームウェア バージョン 8.3.102 が稼働している Cisco 5508 WLC
- Microsoft Windows 用の OpenSSL アプリケーション
- サードパーティ認証局(CA )に固有の登録ツール
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
チェーン証明書
証明書チェーンは、チェーン内の各証明書が後続の証明書によって署名される一連の証明書です。
証明書チェーンの目的は、ピア証明書から信頼される CA 証明書までの連鎖された信頼を築くことです。CAは、署名時にピア証明書内のIDを保証します。
その CA が信頼する CA である場合(ルート証明書ディレクトリに CA 証明書のコピーが存在することによって示されます)、署名されたピア証明書も信頼できることを意味します。
クライアントは、既知の CA によって作成された証明書でなければ受け入れないことがあります。通常、クライアントでは、証明書の妥当性を確認できないと示します。
これは、証明書の署名がクライアントのブラウザに設定されていない 中間 CA による場合です。その場合は、チェーン SSL 証明書または証明書グループを使用する必要があります。
チェーン証明書のサポート
コントローラを使用して、デバイス証明書を Web 認証用のチェーン証明書としてダウンロードできます。
証明書のレベル
- レベル 0:WLC 上のサーバ証明書のみを使用
- レベル 1:WLC 上のサーバ証明書と CA ルート証明書を使用
- レベル 2:WLC 上のサーバ証明書、1 つの署名付き中間 CA 証明書、および CA ルート証明書を使用
- レベル 3:WLC 上のサーバ証明書、2 つの署名付き中間 CA 証明書、および CA ルート証明書を使用
WLC では、サイズが 10KB を超えるチェーン証明書はサポートされません。ただし、WLC バージョン 7.0.230.0 以降では、この制限が取り除かれています。
注:チェーン証明書はサポートされており、Web認証とWeb管理に実際に必要です。
注:ワイルドカード証明書は、ローカルEAP、管理、またはWeb認証で完全にサポートされています。
次の任意の Web 認証証明書を使用できます。
- チェーン証明書
- チェーンされていない証明書
- 自動生成
注:WLCバージョン7.6以降では、チェーン証明書のみがサポートされています(したがって、チェーン証明書が必要です)。
管理目的でチェーンされていない証明書を生成するには、このドキュメントを参照し、証明書がCA証明書と組み合わされる部分は無視してください。
このドキュメントでは、チェーン Secure Socket Layer(SSL)証明書を WLC に適切にインストールする方法を説明します。
ステップ 1:CSR の生成
CSR を生成する方法は 2 つあります。OpenSSL(8.3よりも前のWLCソフトウェアで可能な唯一の方法)を使用して手動で行うか、WLC自体を使用してCSRを生成します(8.3.102以降で使用可能)。
オプション A:OpenSSL を使用した CSR
注:Chromeバージョン58以降は、証明書の共通名だけを信頼せず、サブジェクトの別名(SAN)も必要です。次のセクションでは、このブラウザの新しい要件であるOpenSSL CSRにSANフィールドを追加する方法について説明します。
OpenSSL を使用して CSR を生成するには、次の手順を実行します。
- OpenSSL をインストールして開きます。
Microsoft Windowsのデフォルトでは、openssl.exeはC:\ > openssl > binにあります。
注:古いWLCリリースにはOpenSSLバージョン0.9.8が推奨されていますが、バージョン7.5ではOpenSSLバージョン1.0のサポートも追加されており(Cisco Bug ID CSCti65315 - OpenSSL v1.0で生成された証明書のサポートが必要なことを参照)、このバージョンを使用することが推奨されています。OpenSSL 1.1もテスト済みで、8.x以降のWLCリリースで動作します。
- OpenSSL の設定ファイルを見つけてコピーし、この CSR 用に編集します。コピーを編集して次のセクションを追加します。
-
[req]
req_extensions = v3_req
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = server1.example.com
DNS.2 = mail.example.com
DNS.3 = www.example.com
DNS.4 = www.sub.example.com
DNS.5 = mx.example.com
DNS.6 = support.example.com
「DNS.1」、「DNS.2」(など)で始まる行には、証明書の代替名がすべて含まれている必要があります。次に、WLCに使用されるURLを書き込みます。前の例の太字の行は、ラボのopenSSLバージョンでは存在しないか、コメントになっています。これは、オペレーティングシステムやopensslのバージョンによって大きく異なる場合があります。変更されたバージョンの設定は、この例では openssl-san.cnf として保存されます。
- 新しいCSRを生成するには、次のコマンドを入力します。
OpenSSL>req -new -newkey rsa:3072 -nodes -keyout mykey.pem -out myreq.pem -config openssl-san.cnf
注:WLCでは、ソフトウェアバージョン8.5で最大キーサイズ4096ビットがサポートされています。
- 国名、州、都市などの情報の入力を求めるプロンプトが表示されます。必要な情報を入力します。
注:正しい共通名を指定することが重要です。証明書の作成に使用されるホスト名(共通名)が、WLC 上の仮想インターフェイス IP アドレスのドメイン ネーム システム(DNS)のホスト名エントリに一致すること、そしてその名前が DNS にも存在することを確認します。また、仮想 IP(VIP)インターフェイスへの変更後には、この変更を反映するためにシステムをリブートする必要があります。
ランダム データの例は次のとおりです。
OpenSSL>req -new -newkey rsa:3072 -nodes -keyout mykey.pem -out myreq.pem -config openssl-san.cnf
Loading 'screen' into random state - done
Generate a 1024 bit RSA private key
................................................................++++++
...................................................++++++
writing new private key to 'mykey.pem'
-----
You are about to be asked to enter information that is incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there is a default value,
If you enter '.', the field is left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:CA
Locality Name (eg, city) []:San Jose
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ABC
Organizational Unit Name (eg, section) []:CDE
Common Name (eg, YOUR name) []:XYZ.ABC
Email Address []:(email address)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Test123
An optional company name []:OpenSSL>
- openssl req -text -noout -in csrfilenameを使用して、CSR(特にSAN属性presencE)を確認できます。
- すべての必要な詳細を入力すると、2 つのファイルが生成されます。
- mykey.pemという名前を含む新しい秘密キー
- 名前myreq.pemを含むCSR。
オプション B:WLC による CSR の生成
WLCがソフトウェアバージョン8.3.102以降を実行している場合、より安全なオプションは、WLCを使用してCSRを生成することです。利点は、キーがWLCで生成され、WLCから送信されないことです。このため、外部に公開されることはありません。
現時点では、この方法では、SAN属性の存在を必要とする特定のブラウザの問題につながることが知られているCSRでSANを設定することはできません。一部のCAでは、署名時にSANフィールドを挿入できるため、CAに確認することをお勧めします。
WLCによるCSR生成では、キーサイズとして2048ビットを使用し、ecdsaキーサイズとして256ビットを使用します。
注:csr generationコマンドを実行し、それに続く証明書をまだインストールしていない場合、WLCではリブート後に新しく生成されたCSRキーを使用しますが、それに伴う証明書を使用しないため、次のリブート時にWLCはHTTPSで完全に到達不能になります。
Web認証用のCSRを生成するには、次のコマンドを入力します。
(WLC) >config certificate generate csr-webauth BE BR Brussels Cisco TAC mywebauthportal.wireless.com tac@cisco.com
-----BEGIN CERTIFICATE REQUEST-----
MIICqjCCAZICAQAwZTELMAkGA1UECAwCQlIxETAPBgNVBAcMCEJydXNzZWxzMQ4w
DAYDVQQKDAVDaXNjbzEMMAoGA1UECwwDVEFDMSUwIwYDVQQDDBxteXdlYmF1dGhw
b3J0YWwud2lyZWxlc3MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAnssc0BxlJ2ULa3xgJH5lAUtbd9CuQVqqf2nflh+V1tu82rzTvz38bjF3g+MX
JiaBbKMA27VJH1J2K2ycDMlhjyYpH9N59T4fXvZr3JNGVfmHIRuYDnCSdil0ookK
FU4sDwXyOxR6gfB6m+Uv5SCOuzfBsTz5bfQ1NlZqg1hNemnhqVgbXEd90sgJmaF2
0tsL0jUhbLosdwMLUbZ5LUa34mvufoI3VAKA0cmWZh2WzMJiaI2JpbO0afRO3kSg
x3XDkZiR7Z9a8rK6Xd8rwDlx0TcMFWdWVcKMDgh7Tw+Ba1cUjjIMzKT6OOjFGOGu
yNkgYefrrBN+WkDdc6c55bxErwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAB0K
ZvEpAafoovphlcXIElL2DSwVzjlbd9u7T5JRGgqri1l9/0wzxFjTymQofga427mj
5dNqlCWxRFmKhAmO0fGQkUoP1YhJRxidu+0T8O46s/stbhj9nuInmoTgPaA0s3YH
tDdWgjmV2ASnroUV9oBNu3wR6RQtKDX/CnTSRG5YufTWOVf9IRnL9LkU6pzA69Xd
YHPLnD2ygR1Q+3Is4+5Jw6ZQAaqlPWyVQccvGyFacscA7L+nZK3SSITzGt9B2HAa
PQ8DQOaCwnqt2efYmaezGiHOR8XHOaWcNoJQCFOnb4KK6/1aF/7eOS4LMA+jSzt4
Wkc/wH4DyYdH7x5jzHc=
-----END CERTIFICATE REQUEST-----
webadminのCSRを生成するために、コマンドが次のように変更されます。
(WLC) >config certificate generate csr-webadmin BE BR Brussels Cisco TAC mywebauthportal.wireless.com tac@cisco.com
注:コマンドを入力すると、CSRが端末に出力されます。これを取得する方法は他にありません。WLCからアップロードすることも、保存することもできません。 コマンドを入力した後、コンピュータ上のファイルに CSR を コピーアンドペーストする必要があります。生成されたキーは、次の CSR が生成されるまで WLC に残ります(そのためキーは上書きされます)。後でWLCハードウェアを変更(RMA)する必要がある場合は、新しいキーと同じ証明書を再インストールできず、CSRが新しいWLCで生成されます。
生成された CSR は、サードパーティの署名機関またはエンタープライズ公開キーインフラストラクチャ(PKI)に渡す必要があります。
ステップ 2:証明書の署名の取得
オプションA:エンタープライズCAからFinal.pemファイルを取得する
この例では、現在のエンタープライズCA(この例ではWindows Server 2012)のみを示し、Windows Server CAを最初からセットアップする手順については説明しません。
- ブラウザでエンタープライズ CA のページ(通常は https://<CA-ip>/certsrv)に移動し、[証明書の要求(Request a certificate)] をクリックします。
- [advanced certificate request] をクリックします。
- WLC または OpenSSL から取得した CSR を入力します。[証明書テンプレート(Certificate Template)] ドロップダウンリストで、[Webサーバー(Web Server)] を選択します。
- Base 64 encodedradioボタンをクリックします。
- ダウンロードした証明書のタイプがPKCS7(.p7b)の場合は、証明書をPEMに変換します(次の例では、証明書チェーンがファイル名「All-certs.p7b」としてダウンロードされています)。
openssl pkcs7 -print_certs -in All-certs.p7b -out All-certs.pem
6. オプションA(OpenSSLでCSRを生成)を使用した場合、証明書チェーン(この例では「All-certs.pem」)証明書と、CSRとともに生成された秘密キー(デバイス証明書の秘密キー。この例ではmykey.pem)を組み合わせて、ファイルをfinal.pemとして保存します。WLCから直接CSRを生成した場合(オプションB)、この手順を省略します。
All-certs.pemファイルとfinal.pemファイルを作成するには、OpenSSLアプリケーションで次のコマンドを入力します。
openssl>pkcs12 -export -in All-certs.pem -inkey mykey.pem
-out All-certs.p12 -clcerts -passin pass:check123
-passout pass:check123
openssl>pkcs12 -in All-certs.p12 -out final.pem
-passin pass:check123 -passout pass:check123
注:このコマンドでは、パラメータ-passinおよび-passoutに対してパスワードを入力する必要があります。-passout パラメータに設定するパスワードは、WLC 上で設定する certpassword パラメータと一致している必要があります。この例では、-passin と -passout の両方のパラメータに対してパスワード check123 を設定しています。
Final.pemは、「Option A. CSR with OpenSSL」に従った場合にWLCにダウンロードするファイルです。
「オプションB. WLC自体によって生成されるCSR」に従った場合、All-certs.pemはWLCにダウンロードするファイルです。次の手順では、このファイルを WLC にダウンロードします。
注:WLCへの証明書のアップロードが失敗する場合は、pemファイルにチェーン全体があることを確認してください。これがどのように見えるかについては、オプションBのステップ2(サードパーティCAからfinal.pemを取得する)を参照してください。ファイルで表示される証明書が 1 つだけの場合は、すべての中間 CA 証明書ファイルとルート CA 証明書ファイルを手動でダウンロードし、ファイルに追加して(単純にコピーアンドペーストして)チェーンを作成します。
オプションB:サードパーティCAからFinal.pemファイルを取得する
- CSR の情報をコピーして、任意の CA の登録ツールに貼り付けます。
サードパーティ CA に CSR を送信すると、サードパーティ CA がデジタル署名した証明書チェーンが電子メールで返されてきます。チェーン証明書の場合、CA から証明書のチェーン全体が返されます。この例のように 中間証明書が 1 つだけ表示される場合は、CA から次の 3 種類の証明書を受け取ります。
- Root certificate.pem
- Intermediate certificate.pem
- Device certificate.pem
注:証明書がSecure Hash Algorithm 1(SHA1)暗号化とApache互換であることを確認します。
- 3 つの証明書をすべて入手したら、各 .pem ファイルの内容を以下の順で別のファイルにコピー アンド ペーストします。
------BEGIN CERTIFICATE------
*Device cert*
------END CERTIFICATE------
------BEGIN CERTIFICATE------
*Intermediate CA cert *
------END CERTIFICATE--------
------BEGIN CERTIFICATE------
*Root CA cert *
------END CERTIFICATE------
- All-certs.pem としてファイルを保存します。
- オプションA(OpenSSLでCSRを生成)を使用した場合、All-certs.pem証明書と、CSRとともに生成された秘密キー(デバイス証明書の秘密キー。この例ではmykey.pem)を組み合わせて、ファイルをfinal.pemとして保存します。WLCから直接CSRを生成した場合(オプションB)、この手順を省略します。
All-certs.pemファイルとfinal.pemファイルを作成するには、OpenSSLアプリケーションで次のコマンドを入力します。
openssl>pkcs12 -export -in All-certs.pem -inkey mykey.pem
-out All-certs.p12 -clcerts -passin pass:check123
-passout pass:check123
openssl>pkcs12 -in All-certs.p12 -out final.pem
-passin pass:check123 -passout pass:check123
注:このコマンドでは、パラメータ-passinおよび -passoutに対してパスワードを入力する必要があります。-passout パラメータに設定するパスワードは、WLC 上で設定する certpassword パラメータと一致している必要があります。上記の例では、-passin と -passout の両方のパラメータに対して設定されるパスワードは check123 です。
Final.pemは、「Option A. CSR with OpenSSL」に従った場合にWLCにダウンロードするファイルです。 「オプションB. WLC自体によって生成されるCSR」に従った場合、All-certs.pemファイルをWLCにダウンロードする必要があります。 次の手順では、このファイルを WLC にダウンロードします。
注:SHA2もサポートされています。Cisco Bug ID CSCuf20725 は、SHA512 サポートの要求です。
ステップ 3 CLI:CLI を使用した WLC へのサードパーティ証明書のダウンロード
CLIを使用してチェーン証明書をWLCにダウンロードするには、次の手順を実行します。
- TFTP サーバ上のデフォルト ディレクトリに final.pem ファイルを移動します。
- CLIで次のコマンドを入力して、ダウンロード設定を変更します。
>transfer download mode tftp
>transfer download datatype webauthcert
>transfer download serverip <TFTP server IP address>
>transfer download path <absolute TFTP server path to the update file>
>transfer download filename final.pem
- オペレーティング システムで SSL キーと証明書を復号化できるように、.pem ファイルのパスワードを入力します。
>transfer download certpassword password
注:certpassword の値が、「CSRの生成」セクションのステップ4(または5)で設定した -passout パラメータのパスワードと同じであることを確認してください。この例では、certpassword の値は check123 でなければなりません。オプションBを選択した場合(つまり、CSRを生成するためにWLC自体を使用する場合)、certpasswordフィールドは空白のままにします。
- 更新された設定を表示するには、
transfer download start
コマンドを入力します。次に、プロンプトで y と入力して、現在のダウンロード設定を確認し、証明書とキーのダウンロードを開始します。ランダム データの例は次のとおりです。
(Cisco Controller) >transfer download start
Mode............................................. TFTP
Data Type........................................ Site Cert
TFTP Server IP................................... 10.77.244.196
TFTP Packet Timeout.............................. 6
TFTP Max Retries................................. 10
TFTP Path........................................./
TFTP Filename.................................... final.pem
This might take some time.
Are you sure you want to start? (y/N) y
TFTP EAP Dev cert transfer start.
Certificate installed.
Reboot the switch to use new certificate.
- 変更を有効にするために、WLC をリブートします。
ステップ 3 GUI:GUI を使用した WLC へのサードパーティ証明書のダウンロード
GUIを使用してチェーン証明書をWLCにダウンロードするには、次の手順を実行します。
- デバイスの証明書 final.pem を TFTP サーバ上のデフォルト ディレクトリにコピーします。
- Security > Web Auth > Cert の順に選択して、Web Authentication Certificateページを開きます。
- [Download SSL Certificate] チェック ボックスをオンにして、[Download SSL Certificate From TFTP Server] のパラメータを表示します。
- [IP Address] フィールドに、TFTP サーバの IP アドレスを入力します。
- [File Path] フィールドに、証明書のディレクトリ パスを入力します。
- [File Name] フィールドに、証明書の名前を入力します。
- [Certificate Password] フィールドに、証明書を保護するために使用されたパスワードを入力します。
- [APPLY] をクリックします。
- ダウンロードの完了後、[Commands] > [Reboot] > [Reboot] の順に選択します。
- 変更を保存するように求めるプロンプトが表示されたら、[Save and Reboot] をクリックします。
- 変更内容を確定するために [OK] をクリックして、コントローラをリブートします。
トラブルシュート
WLCへの証明書のインストールをトラブルシューティングするには、WLCでコマンドラインを開き debug transfer all enable
debug pm pki enable
、証明書のダウンロード手順に従います。
In some cases, the logs only say that the certificate installation failed:
*TransferTask: Sep 09 08:37:17.415: RESULT_STRING: TFTP receive complete... Installing
Certificate.
*TransferTask: Sep 09 08:37:17.415: RESULT_CODE:13
TFTP receive complete... Installing Certificate.
*TransferTask: Sep 09 08:37:21.418: Adding cert (1935 bytes) with certificate key password.
*TransferTask: Sep 09 08:37:21.421: RESULT_STRING: Error installing certificate.
証明書の形式とチェーンを確認します。バージョン7.6以降のWLCではチェーン全体が存在する必要があるため、WLC証明書を単独でアップロードすることはできません。ルート CA までのチェーンがファイル内に存在する必要があります。
次に、中間 CA が正しくない場合のデバッグの例を示します。
*TransferTask: Jan 04 19:08:13.338: Add WebAuth Cert: Adding certificate & private key using password check123
*TransferTask: Jan 04 19:08:13.338: Add ID Cert: Adding certificate & private key using password check123
*TransferTask: Jan 04 19:08:13.338: Add Cert to ID Table: Adding certificate (name: bsnSslWebauthCert) to ID table using password check123
*TransferTask: Jan 04 19:08:13.338: Add Cert to ID Table: Decoding PEM-encoded Certificate (verify: YES)
*TransferTask: Jan 04 19:08:13.338: Decode & Verify PEM Cert: Cert/Key Length was 0, so taking string length instead
*TransferTask: Jan 04 19:08:13.338: Decode & Verify PEM Cert: Cert/Key Length 7148 & VERIFY
*TransferTask: Jan 04 19:08:13.342: Decode & Verify PEM Cert: X509 Cert Verification return code: 0
*TransferTask: Jan 04 19:08:13.342: Decode & Verify PEM Cert: X509 Cert Verification result text: unable to get local issuer certificate
*TransferTask: Jan 04 19:08:13.342: Decode & Verify PEM Cert: Error in X509 Cert Verification at 0 depth: unable to get local issuer certificate
*TransferTask: Jan 04 19:08:13.343: Add Cert to ID Table: Error decoding (verify: YES) PEM certificate
*TransferTask: Jan 04 19:08:13.343: Add ID Cert: Error decoding / adding cert to ID cert table (verifyChain: TRUE)
*TransferTask: Jan 04 19:08:13.343: Add WebAuth Cert: Error adding ID cert
高可用性(HA SSO)の考慮事項
WLC HA SSO 導入ガイドで説明されているように、HA SSO シナリオでは、証明書がプライマリコントローラからセカンダリコントローラに複製されることはありません。
つまり、HAペアを形成する前に、すべての証明書をセカンダリにインポートする必要があります。
もう1つの注意点は、プライマリWLC上でCSRを生成した(したがってキーをローカルに作成した)場合は、そのキーはエクスポートできないため、この方法が機能しないことです。
有効な唯一の方法は、OpenSSL を使用してプライマリ WLC の CSR を生成し(したがって証明書にキーが付属している)、両方の WLC でその証明書/キーの組み合わせをインポートする方法です。
関連情報