2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cisco WLCで802.1X認証(EAP-TLS)をLocalEAPでやってみる

Last updated at Posted at 2019-01-05

はじめに

このエントリはCisco WLCのEAP-TLSをWLC自身で認証する、ローカルEAP(TLSのみ)の手順について記載します。
ローカルEAPではPEAPやLEAPの設定もできますが、ひとまずTLSのみです。

対象機器および環境

  • Cisco Virtual Wireless LAN Controller (Ver.8.2.x)
  • Windows10

このエントリを読むとできること

  • WLCをRADIUSサーバ替わりにして
  • EAP-TLS認証ができるようになる

はず。

関連するエントリ

Cisco WLCにSSIDを作成する(802.1X/PSK) コマンド編+よくつかうコマンド
Cisco WLC と FreeRADIUS を利用した EAP-TLS認証
OpenSSLでプライベート認証局の構築(ルートCA、中間CA)

前提条件

ローカルEAPは中間認証局に対応していないため、前回までのやり方が使えません。
なぜだ。。。
Cisco Wireless Controller Configuration Guide, Release 8.2
そして、日本語コンフィギュレーションガイドに当該の記載がなく、英語版には記載されている。章立ても違うみたい。
なぜなんだ。。。

Local authentication with certificates of second level hierarchy (CA + intermediate CA + device) is not supported.

いうわけで、今回はサーバ証明書もクライアント証明書もルートCAから発行しています。

WLCの設定

別エントリで構築したPKI環境 で証明書を発行していきます。

サーバ証明書発行

(VMwlc01というサーバに対して発行するので、新規ディレクトリを作成する)
mkdir -p /opt/pki/Server/VMwlc01
cd /opt/pki/Server/VMwlc01

(パスワード無し秘密鍵とCSRを同時に発行しています)
openssl req -new -out VMwlc01_csr.pem -newkey rsa:2048 -nodes -keyout VMwlc01_key.pem -subj "/C=JP/ST=Tokyo/O=EXAMPLE/CN=VMwlc01.example.net"

(RootCAで署名する)
cd /opt/pki/RootCA
openssl ca -config ../configs/openssl_sign.cnf -out ../Server/VMwlc01/VMwlc01_crt.pem -in ../Server/VMwlc01/VMwlc01_csr.pem -cert RootCA_crt.pem -keyfile RootCA_key.pem -passin pass:rootcaprivkeypass -batch -extensions v3_server

(余計な文字列を取り除きます)
cd /opt/pki/Server/VMwlc01
openssl x509 -in VMwlc01_crt.pem -out VMwlc01_crt.pem

(WLCに証明書と秘密鍵のセットをエクスポートするためPKCS#12ファイルを作成)
openssl pkcs12 -export -out VMwlc01_crt.p12 -in VMwlc01_crt.pem -inkey VMwlc01_key.pem -passout pass:exportpass

(WLCがPKCS#12をそのまま読めないのでPEM変換?する)
(最後の -passout は秘密鍵を "privkeypass" の文字列で暗号化)
openssl pkcs12 -in VMwlc01_crt.p12 -out VMwlc01_crt_final.pem -passin pass:exportpass -passout pass:privkeypass

WLCに証明書をインストール

ルートCA証明書

/opt/pki/
|-- RootCA
|   |-- RootCA_crt.pem
|   |-- RootCA_csr.pem
|   |-- RootCA_key.pem
(RootCA_crt.pemがルートCA証明書)

上部メニュー「COMMANDS」→左側メニュー「DownloadFile」を選択
FileTypeは「Vendor CA Certificate」を選択
その下は転送方法を環境に合わせて修正
(下図では、FTPで転送してます)
image.png

転送がうまくいったら、次のメッセージが出るので、「ClickHere」のリンクをクリック
image.png

「Save and Reboot」をクリック
image.png

サーバ証明書

/opt/pki/
|-- Server
|   |-- VMwlc01
|   |   |-- VMwlc01_crt.p12
|   |   |-- VMwlc01_crt.pem
|   |   |-- VMwlc01_crt_final.pem
(VMwlc01_rt_final.pemがサーバ証明書+秘密鍵)

 

上部メニュー「COMMANDS」→左側メニュー「DownloadFile」を選択
「FileType」は「Vendor Device Certificate」を選択
「Certificate Password」は作成時に設定した秘密鍵のパスワードを入力
(今回の例では privkeypass です)
image.png

転送がうまくいったら、次のメッセージが出るので、「ClickHere」のリンクをクリック
image.png

「Save and Reboot」をクリック
image.png

WLCの証明書を確認

CA証明書
上部メニュ「SECURITY」→左側メニュ「Advanced」→「Vendor Certs」→「CA Certificate」
image.png

サーバ証明書
上部メニュ「SECURITY」→左側メニュ「Advanced」→「Vendor Certs」→「CA Certificate」
image.png

Local EAPの設定

ローカルEAPのプロファイルを作成して、WLANに適用させる。という流れです。

上部メニュ「SECURITY」→左側メニュ「Local EAP」→「Profiles」を選択し、画面右上の「New...」をクリック
image.png

 
プロファイル名は適当なものを入力し「Apply」をクリック(例では eap-tls というプロファイル名にしています)
image.png

 
すると、一覧に表示されるので、作成したプロファイル名のリンクをクリック
image.png

 
デフォルトからの変更点は以下のとおり

  • 「EAP-TLS」にチェック
  • 「Client Certificate Required」にチェック
  • 「Certificate Issuer」をVendorに変更

として、右上の「Apply」をクリック
image.png

 
これをWLANに適用していきます。
上部メニュ「WLANs」で表示されるWLAN IDの数字をクリック
(今回はID1の IntraGeneral に適用します)
image.png

 
「Security」タブの「AAA Servers」子タブを開きます。
「RADIUS Servers」の「Authentication Servers」にチェックが入っているはずなので、チェックをオフにします
image.png

 
もうすこし下に進んで、「Local EAP Authentication」にチェックを入れ、「EAP Profile Name」を先ほどLocalEAPで作成したプロファイル名にします。
最後に、画面右上の「Apply」をクリックします。
image.png

クライアント

クライアント証明書発行

(Client02というクライアントに対して発行するので、新規ディレクトリを作成する)
mkdir -p /opt/pki/Client/Client02
cd /opt/pki/Client/Client02

(パスワード無し秘密鍵とCSRを同時に発行しています)
openssl req -new -out Client02_csr.pem -newkey rsa:2048 -nodes -keyout Client02_key.pem -subj "/C=JP/ST=Tokyo/O=EXAMPLE/CN=Client02.example.net"

(RootCAで署名する)
cd /opt/pki/RootCA
openssl ca -config ../configs/openssl_sign.cnf -out ../Client/Client02/Client02_crt.pem -in ../Client/Client02/Client02_csr.pem -cert RootCA_crt.pem -keyfile RootCA_key.pem -passin pass:rootcaprivkeypass -batch -extensions v3_client

(余計な文字列を取り除きます)
cd /opt/pki/Client/Client02
openssl x509 -in Client02_crt.pem -out Client02_crt.pem

(クライアントに証明書と秘密鍵のセットをエクスポートするためPKCS#12ファイルを作成)
openssl pkcs12 -export -inkey Client02_key.pem -in Client02_crt.pem -certfile ../../chainCA_crt.pem -out Client02_crt.p12 -passout pass:exportpass
※この時の -passoutオプションで設定するパスワードはクライアントにインポートするときに必要

Windowsクライアント設定

前回と同様です

動作確認

(Cisco_Controller)_debug_aaa_local-auth_eap_method_events_enable
*EAP_Framework_0: Jan 05 13:31:33.439: 00:21:6a:ca:4a:a2 eap_tls.c-PEER-EVENT: New context (EAP handle = 13000008)
*EAP_Framework_0: Jan 05 13:31:33.439: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: Allocated new EAP-TLS context (handle = 69000008)
*EAP_Framework_0: Jan 05 13:31:33.439: eap_tls.c-AUTH-EVENT: Process Response, type: Identity
*EAP_Framework_0: Jan 05 13:31:33.439: eap_tls.c-AUTH-EVENT: Process Response: auth_complete:0, auth_success:0, eap-tls_FragsInQ: NO
*EAP_Framework_0: Jan 05 13:31:33.439: eap_tls.c-AUTH-EVENT: Sending Start Packet for TLS context 69000008
*EAP_Framework_0: Jan 05 13:31:33.439: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: EAP TLS start message received
*EAP_Framework_0: Jan 05 13:31:33.439: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: Setting up TLS SSL context
*EAP_Framework_0: Jan 05 13:31:33.439: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: Setting default PKI trustpoint to vendor
*EAP_Framework_0: Jan 05 13:31:33.439: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-ERROR: Unable to get peer identity - disabled
*EAP_Framework_0: Jan 05 13:31:33.489: eap_tls.c-AUTH-EVENT: Process Response, type: TLS
*EAP_Framework_0: Jan 05 13:31:33.489: eap_tls.c-AUTH-EVENT: Process Response: auth_complete:0, auth_success:0, eap-tls_FragsInQ: NO
*EAP_Framework_0: Jan 05 13:31:33.489: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: Queueing up fragment for TLS context 69000008
*EAP_Framework_0: Jan 05 13:31:33.489: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: EAP TLS handshake message received
*EAP_Framework_0: Jan 05 13:31:33.490: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: tls_send: 1096 byte eap packet sent
*EAP_Framework_0: Jan 05 13:31:33.490: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: SSL Handshake has signalled a read block
*EAP_Framework_0: Jan 05 13:31:33.609: eap_tls.c-AUTH-EVENT: Process Response, type: TLS
*EAP_Framework_0: Jan 05 13:31:33.609: eap_tls.c-AUTH-EVENT: Process Response: auth_complete:0, auth_success:0, eap-tls_FragsInQ: NO
*EAP_Framework_0: Jan 05 13:31:33.609: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: Queueing up fragment for TLS context 69000008
*EAP_Framework_0: Jan 05 13:31:33.609: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: Sending ACK for TLS context 69000008
*EAP_Framework_0: Jan 05 13:31:33.609: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: EAP TLS handshake message received
*EAP_Framework_0: Jan 05 13:31:33.609: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: SSL Handshake has signalled a read block
*EAP_Framework_0: Jan 05 13:31:33.668: eap_tls.c-AUTH-EVENT: Process Response, type: TLS
*EAP_Framework_0: Jan 05 13:31:33.668: eap_tls.c-AUTH-EVENT: Process Response: auth_complete:0, auth_success:0, eap-tls_FragsInQ: NO
*EAP_Framework_0: Jan 05 13:31:33.668: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: Queueing up fragment for TLS context 69000008
*EAP_Framework_0: Jan 05 13:31:33.668: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: EAP TLS handshake message received
*EAP_Framework_0: Jan 05 13:31:33.672: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: tls_send: 69 byte eap packet sent
*EAP_Framework_0: Jan 05 13:31:33.672: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: SSL Handshake complete. Outcome is Success
*EAP_Framework_0: Jan 05 13:31:33.742: eap_tls.c-AUTH-EVENT: Process Response, type: TLS
*EAP_Framework_0: Jan 05 13:31:33.742: eap_tls.c-AUTH-EVENT: Process Response: auth_complete:1, auth_success:1, eap-tls_FragsInQ: NO
*EAP_Framework_0: Jan 05 13:31:33.742: eap_tls.c-AUTH-EVENT: ACK received, sending Success
*EAP_Framework_0: Jan 05 13:31:33.742: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: Sending free context (EAP handle = 13000008)
*EAP_Framework_0: Jan 05 13:31:33.742: 00:21:6a:ca:4a:a2 eap_tls.c-AUTH-EVENT: EAP TLS cleanup SSL message received

さいごに

感想

WLCとRADIUSサーバはデータセンタに同居していることが多いのかな。
これ単体ではあんまり意味なさそうなので、これとFlexConnectのLocalAuthenticationを組み合わせれば、WAN切断時でもAPでTLS認証が継続できそう。
けど、いまのところうまくいってません。うまくいったらまた記載したいしたいと思います。

それはさておき。
はて、CRLはどこで設定するんだろ。。。
証明書のCDPを見に行ってくれてる?
もう少し追加検証が必要なようです。

出典

だいたいのことはコンフィギュレーションガイドにのってます。
Cisco Wireless Controller コンフィギュレーション ガイド、リリース 8.2
[ローカルEAPの章(コンフィギュレーションガイドの中)]
(https://www.cisco.com/c/ja_jp/td/docs/wireless/controller/8-2/config-guide/b_cg82/b_cg82_chapter_0110011.html)

おまけ

以下コピペでWLC用の証明書と、RootCAから発行するクライアント証明書の発行が可能。

mkdir -p /opt/pki/Server/VMwlc01
cd /opt/pki/Server/VMwlc01
openssl req -new -out VMwlc01_csr.pem -newkey rsa:2048 -nodes -keyout VMwlc01_key.pem -subj "/C=JP/ST=Tokyo/O=EXAMPLE/CN=VMwlc01.example.net"
cd /opt/pki/RootCA
openssl ca -config ../configs/openssl_sign.cnf -out ../Server/VMwlc01/VMwlc01_crt.pem -in ../Server/VMwlc01/VMwlc01_csr.pem -cert RootCA_crt.pem -keyfile RootCA_key.pem -passin pass:rootcaprivkeypass -batch -extensions v3_server
cd /opt/pki/Server/VMwlc01
openssl x509 -in VMwlc01_crt.pem -out VMwlc01_crt.pem
openssl pkcs12 -export -out VMwlc01_crt.p12 -in VMwlc01_crt.pem -inkey VMwlc01_key.pem -passout pass:exportpass
openssl pkcs12 -in VMwlc01_crt.p12 -out VMwlc01_crt_final.pem -passin pass:exportpass -passout pass:privkeypass

mkdir -p /opt/pki/Client/Client02
cd /opt/pki/Client/Client02
openssl req -new -out Client02_csr.pem -newkey rsa:2048 -nodes -keyout Client02_key.pem -subj "/C=JP/ST=Tokyo/O=EXAMPLE/CN=Client02.example.net"
cd /opt/pki/RootCA
openssl ca -config ../configs/openssl_sign.cnf -out ../Client/Client02/Client02_crt.pem -in ../Client/Client02/Client02_csr.pem -cert RootCA_crt.pem -keyfile RootCA_key.pem -passin pass:rootcaprivkeypass -batch -extensions v3_client
cd /opt/pki/Client/Client02
openssl x509 -in Client02_crt.pem -out Client02_crt.pem
openssl pkcs12 -export -inkey Client02_key.pem -in Client02_crt.pem -certfile ../../chainCA_crt.pem -out Client02_crt.p12 -passout pass:exportpass

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?