Cisco ISEのシステム証明書としてPFXファイルをインポートする方法

最近ですがCisco ISE 3.1にシステム証明書を入れる必要がありましたが、少しハマったので備忘録としてまとめたいと思います。
なぜ証明書が必要だったか
認証まわりの話なので何かとどこかで証明書が必要です。今回はISEのSelf-Signed Certificate(自署証明書:いわゆるオレオレ証明書)ではなく、DigiCertの発行した証明書を用いることとなっていました。
クライアント認証そのものは外部のAD(Active Directory)サーバと連携して行うので証明書認証は行わない想定でした。
私はそこで無知なあまり証明書の検討優先度を下げてしまったのですが、そもそもクライアントがISEと安全な通信、つまり暗号化通信をするために証明書が必要でした。ISEではシステム証明書のうち「EAP Authentication」用の証明書を使うこととなります。
これの有効期限が切れており、うまくクライアント認証ができず、再インポートをすることとなりました。
PFXファイルがインポートできない
Certificate FileとPrivate Key Fileをインポートする必要がありますが、PFXファイルとはそれらが統合されたものなので1つのファイルしかありません。Certificate FileのところにPFXファイルをインポートしても動きませんし、Certificate FileとPrivate Key Fileの両方にPFXファイルをインポートしようとしてもエラーとなります。
ではどうPFXファイルをインポートするか。分割
分割します。証明書と秘密鍵が統合されているのがGoodなPFXファイルですがISEには適用できません。もしかするとISEのバージョンにもよるかも知れません。
どう分割するか
他のツールでもできると思いますが私はOpenSSLを使いました。OpenSSLをインストールしてPATHを通して(Windowsの環境変数としてOpenSSLのexeのパスを登録)、一例ですがコマンドプロンプトで以下のコマンドを実施します。
- 秘密鍵(暗号化あり)の抽出:
openssl pkcs12 -in file.pfx -nocerts -out key_encrypted.pem -legacy - 秘密鍵の復号(ISE用):
openssl rsa -in key_encrypted.pem -out server.key - 証明書の抽出:
openssl pkcs12 -in file.pfx -clcerts -nokeys -out server.crt -legacy
ISEへのインポート
上記の方法で秘密鍵の抽出と複合、証明書の抽出をすると、server.crtとserver.keyと言う2つのファイルができると思いますので、Certificate Fileにはserver.crtを、Private Key Fileにはserver.keyを登録します。
今回はクライアントとの暗号通信のための証明書なのでEAP Authenticationにチェックをつけて登録します。
余談:認証局証明書のメリット
ISEが単独で発行した証明書は当然ですが世間では知られておらず信頼できません。自分で身分証を自作しても信頼されないのと同じです。オレオレ証明書を使用する場面では、限られた範囲でそれを信頼させます。例えば、会社の社員カードは、外に出るとほとんど効力がありませんが、社内では擬似身分証になりますし部屋に入れたりします。
しかしひとつ手間があります。社内で「この社員カードは信じて良いよ」と言う登録や教育が必要になります。
一方で認証局(DigiCert等)が発行する証明書は世間で認められている証明書です。政府発行と言うと少し言い過ぎかも知れませんが、そのような、免許証のような効力があります。そのため、社員にあらかじめ周知せずともれっきとした身分証として利用できます。
要はオレオレ証明書の場合、予めクライアントにISEの証明書をインストールしておく必要がありますが、認証局の証明書は予めWindowsに登録してあるので、わざわざインストールしておく必要がないと言うことです。
認証局の証明書は費用がかかり、オレオレ証明書は費用がかからないので、手間とコストの費用対効果で考えるのが良いでしょう。
