証明書失効リスト
CA が発行した証明書は、通常、有効期限が切れるまで有効です。ただし、状況によっては、CA が有効期限が切れる前に発行された証明書を取り消すことがあります。たとえば、所有者の秘密鍵が侵害されたり、会社名や個人の名前が変更されたり、サブジェクトと CA との関係が変わったりします。
証明書失効リスト (CRL) は、無効な証明書をシリアル番号と発行者で識別します。
認証局は定期的に CRL を発行します。CRLを使用して無効な証明書を提示するクライアント要求をブロックするようにNetScalerアプライアンスを構成できます。
CAからのCRLファイルが既にある場合は、それをNetScalerアプライアンスに追加します。更新オプションを設定できます。また、WebロケーションまたはLDAPロケーションのいずれかから、指定した間隔でCRLファイルを自動的に同期するようにNetScalerを構成することもできます。アプライアンスは PEM または DER ファイル形式の CRL をサポートします。NetScalerアプライアンスに追加するCRLファイルのファイル形式を必ず指定してください。
ADC を CA として使用して SSL 展開で使用される証明書を作成したことがある場合は、CRL を作成して特定の証明書を取り消すこともできます。この機能を使用すると、たとえば、NetScalerで作成された自己署名証明書が本番環境で使用されたり、特定の日付以降に使用されたりしないようにすることができます。
注:
デフォルトでは、CRLはNetScalerアプライアンスの/var/netscaler/sslディレクトリに保存されます。
ADC アプライアンスで CRL を作成します
ADCアプライアンスを使用してCAの役割を果たし、自己署名証明書を作成できるため、次の証明書を取り消すこともできます。
- 作成した証明書。
- CA 証明書を所有している証明書。
アプライアンスは、それらの証明書の CRL を作成する前に、無効な証明書を取り消す必要があります。アプライアンスは、失効した証明書のシリアル番号をインデックスファイルに保存し、証明書を失効させるたびにファイルを更新します。インデックスファイルは、証明書が初めて失効したときに自動的に作成されます。
CLI を使用して証明書を取り消すか、CRL を作成する
コマンドプロンプトで、次のコマンドを入力します。
create ssl crl <CAcertFile> <CAkeyFile> <indexFile> (-revoke <input_filename> | -genCRL <output_filename>)
<!--NeedCopy-->
例:
create ssl crl Cert-CA-1 Key-CA-1 File-Index-1 -revoke Invalid-1
create ssl crl Cert-CA-1 Key-CA-1 File-Index-1 -genCRL CRL-1
<!--NeedCopy-->
GUI を使用して証明書を取り消すか、CRL を作成する
- [ トラフィック管理] > [SSL ] に移動し、[はじめに] グループで [CRL 管理] を選択します。
- 証明書の詳細を入力し、「 操作の選択 」リストで「 証明書の取り消し」または「CRL の生成」を選択します。
ADC に既存の CRL を追加します
NetScalerアプライアンスでCRLを構成する前に、CRLファイルがNetScalerアプライアンスにローカルに保存されていることを確認してください。HA セットアップでは、CRL ファイルが両方の ADC アプライアンスに存在し、ファイルへのディレクトリパスが両方のアプライアンスで同じである必要があります。
CLIを使用してNetScalerにCRLを追加します
コマンドプロンプトで次のコマンドを入力してNetScalerにCRLを追加し、構成を確認します。
add ssl crl <crlName> <crlPath> [-inform (DER | PEM)]
show ssl crl [<crlName>]
<!--NeedCopy-->
例:
> add ssl crl crl-one /var/netscaler/ssl/CRL-one -inform PEM
Done
> show ssl crl crl-one
Name: crl-one Status: Valid, Days to expiration: 29
CRL Path: /var/netscaler/ssl/CRL-one
Format: PEM CAcert: samplecertkey
Refresh: DISABLED
Version: 1
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US,ST=California,L=Santa Clara,O=NetScaler Inc.,OU=SSL Acceleration,CN=www.ns.com/emailAddress=support@NetScaler appliance.com
Last_update:Jun 15 10:53:53 2010 GMT
Next_update:Jul 15 10:53:53 2010 GMT
1) Serial Number: 00
Revocation Date:Jun 15 10:51:16 2010 GMT
Done
<!--NeedCopy-->
GUIを使用してNetScalerにCRLを追加します
[ トラフィック管理 ] > [ SSL ] > [ CRL] に移動し、CRL を追加します。
CRL 更新パラメータの設定
CRL は、認証局によって定期的に、または特定の証明書が取り消された直後に生成および公開されます。Citrixでは、クライアントが不正な証明書で接続しようとするのを防ぐために、NetScalerアプライアンスのCRLを定期的に更新することをお勧めします。
NetScalerアプライアンスは、WebロケーションまたはLDAPディレクトリからCRLを更新できます。更新パラメータと Web ロケーションまたは LDAP サーバを指定する場合、コマンドの実行時に CRL がローカルハードディスクドライブに存在している必要はありません。最初の更新では、CRL File パラメーターで指定されたパスのローカルハードディスクドライブにコピーが格納されます。CRL を格納するためのデフォルトのパスは /var/netscaler/SSL です。
注:リリース 10.0 以降では、CRL を更新する方法はデフォルトでは含まれていません。HTTP または LDAP メソッドを指定します。以前のリリースからリリース 10.0 以降にアップグレードする場合は、メソッドを追加してコマンドを再実行する必要があります。
CLI を使用して CRL 自動更新を設定する
コマンドプロンプトで次のコマンドを入力して CRL 自動更新を設定し、構成を確認します。
set ssl crl <crlName> [-refresh ( ENABLED | DISABLED )] [-CAcert <string>] [-server <ip_addr|ipv6_addr|*> | -url <URL>] [-method ( HTTP | LDAP )] [-port <port>] [-baseDN <string>] [-scope ( Base | One )] [-interval <interval>] [-day <positive_integer>] [-time <HH:MM>][-bindDN <string>] {-password } [-binary ( YES | NO )]
show ssl crl [<crlName>]
<!--NeedCopy-->
例:
set CRL crl1 -refresh enabled -method ldap -inform DER -CAcert ca1 -server 10.102.192.192 -port 389 -scope base -baseDN "cn=clnt_rsa4_multicert_der,ou=eng,o=ns,c=in" -time 00:01
set ssl crl crl1 -refresh enabled -method http -cacert ca1 -port 80 -time 00:10 -url http://10.102.192.192/crl/ca1.crl
> sh crl
1) Name: crl1 Status: Valid, Days to expiration: 355
CRL Path: /var/netscaler/ssl/crl1
Format: PEM CAcert: ca1
Refresh: ENABLED Method: HTTP
URL: http://10.102.192.192/crl/ca1.crl Port:80
Refresh Time: 00:10
Last Update: Successful, Date:Tue Jul 6 14:38:13 2010
Done
<!--NeedCopy-->
GUI を使用して LDAP または HTTP を使用して CRL 自動更新を設定する
- [ トラフィック管理] > [SSL] > [CRL] に移動します。
- CRL を開き、「 CRL 自動更新を有効にする」を選択します。
注
:CRLの[ 最終更新日時]フィールドで指定された実際の更新時刻よりも前に新しいCRLが外部リポジトリで更新された場合は 、次の操作を行う必要があります。
NetScalerアプライアンスのCRLを直ちに更新してください。
最終更新時刻を表示するには、CRL を選択し、[ 詳細] をクリックします。
CRL を同期する
NetScalerアプライアンスは、最近配布されたCRLを使用して、証明書が失効したクライアントが安全なリソースにアクセスできないようにします。
CRLが頻繁に更新される場合、NetScalerアプライアンスはリポジトリから最新のCRLを取得する自動メカニズムを必要とします。指定した更新間隔で CRL を自動的に更新するようにアプライアンスを設定できます。
アプライアンスは、定期的に更新する必要がある CRL の内部リストを管理しています。指定された間隔で、アプライアンスはリストをスキャンして、更新する必要のある CRL を探します。次に、リモートの LDAP サーバーまたは HTTP サーバーに接続し、最新の CRL を取得して、ローカル CRL リストを新しい CRL で更新します。
注:
CA 証明書が仮想サーバーにバインドされているときに CRL チェックが必須に設定されていて、最初の CRL 更新が失敗した場合、接続に対して次のアクションが実行されます。CRL
と同じ発行者によるすべてのクライアント認証接続は、CRL が正常に更新されるまで REVOKED として拒否されます。
CRL 更新を実行する間隔を指定できます。正確な時間を指定することもできます。
CLI を使用して CRL 自動更新を同期する
コマンドプロンプトで、次のコマンドを入力します。
set ssl crl <crlName> [-interval <interval>] [-day <integer>] [-time <HH:MM>]
<!--NeedCopy-->
例:
set ssl crl CRL-1 -refresh ENABLE -interval MONTHLY -days 10 -time 12:00
<!--NeedCopy-->
GUI を使用して CRL 更新を同期する
- [ トラフィック管理] > [SSL] > [CRL] に移動します。
- CRL を開き、「 CRL 自動更新を有効にする」を選択し、間隔を指定します。
証明書失効リストを使用してクライアント認証を実行する
NetScalerアプライアンスに証明書失効リスト(CRL)が存在する場合、CRLチェックの実行が必須に設定されているかオプションに設定されているかにかかわらず、CRLチェックが実行されます。
ハンドシェイクの成否は、次の要因の組み合わせによって決まります。
- CRL チェックのルール
- クライアント証明書チェックのルール
- CA 証明書に設定された CRL の状態
次の表は、失効した証明書を含むハンドシェイクの可能な組み合わせの結果を示しています。
表1. 失効した証明書を使用したクライアントとのハンドシェイクの結果
CRL チェックのルール | クライアント証明書チェックのルール | CA 証明書に設定された CRL の状態 | 証明書が取り消された場合のハンドシェイクの結果 |
---|---|---|---|
オプション | オプション | 行方不明です | 成功 |
オプション | 固定 | 行方不明です | 成功 |
オプション | 固定 | プレゼント | 失敗 |
固定 | オプション | 行方不明です | 成功 |
固定 | 固定 | 行方不明です | 失敗 |
固定 | オプション | プレゼント | 成功 |
固定 | 固定 | プレゼント | 失敗 |
オプション/必須 | オプション | 期限切れ | 成功 |
オプション/必須 | 固定 | 期限切れ | 失敗 |
注:
CRL チェックはデフォルトではオプションです。オプションから必須に、またはその逆に変更するには、まず証明書をSSL仮想サーバーからバインド解除し、オプションを変更した後に証明書を再バインドする必要があります。
sh ssl vserver
コマンドの出力で、「OCSP チェック:オプション」は、CRL チェックもオプションであることを意味します。CRL チェック設定は、CRL チェックが必須に設定されている場合にのみ、sh ssl vserver
コマンドの出力に表示されます。CRL チェックがオプションに設定されている場合、CRL チェックの詳細は表示されません。
CLI を使用して CRL チェックを設定するには
コマンドプロンプトで、次のコマンドを入力します。
bind ssl vserver <vServerName> -certkeyName <string> [(-CA -crlCheck ( Mandatory | Optional ))]
sh ssl vserver
<!--NeedCopy-->
例:
bind ssl vs v1 -certkeyName ca -CA -crlCheck mandatory
> sh ssl vs v1
Advanced SSL configuration for VServer v1:
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED
Ephemeral RSA: ENABLED Refresh Count: 0
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
SSLv2 Redirect: DISABLED
ClearText Port: 0
Client Auth: ENABLED Client Cert Required: Mandatory
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
ECC Curve: P_256, P_384, P_224, P_521
1) CertKey Name: ca CA Certificate CRLCheck: Mandatory CA_Name Sent
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
GUI を使用して CRL チェックを設定
- [ トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、SSL 仮想サーバーを開きます。
- 「 証明書 」セクションをクリックします。
- 証明書を選択し、OCSP と CRL チェックリストで「CRL必須」を選択します。
失効した証明書または有効な証明書とのハンドシェイクの結果
CRL チェックのルール | クライアント証明書チェックのルール | CA 証明書に設定された CRL の状態 | 証明書が失効した状態でのハンドシェイクの結果 | 有効な証明書を使用したハンドシェイクの結果 |
---|---|---|---|---|
固定 | 固定 | プレゼント | 失敗 | 成功 |
固定 | 固定 | 期限切れ | 失敗 | 失敗 |
固定 | 固定 | 行方不明です | 失敗 | 失敗 |
固定 | 固定 | 未定義 | 失敗 | 失敗 |
オプション | 固定 | プレゼント | 失敗 | 成功 |
オプション | 固定 | 期限切れ | 成功 | 成功 |
オプション | 固定 | 行方不明です | 成功 | 成功 |
オプション | 固定 | 未定義 | 成功 | 成功 |
固定 | オプション | プレゼント | 成功 | 成功 |
固定 | オプション | 期限切れ | 成功 | 成功 |
固定 | オプション | 行方不明です | 成功 | 成功 |
固定 | オプション | 未定義 | 成功 | 成功 |
オプション | オプション | プレゼント | 成功 | 成功 |
オプション | オプション | 期限切れ | 成功 | 成功 |
オプション | オプション | 行方不明です | 成功 | 成功 |
オプション | オプション | 未定義 | 成功 | 成功 |