[index] CentreCOM AR550S コマンドリファレンス 2.9

# PKI/概要・基本設定

      - PKIとは
      - IPsecとPKI
      - PKIの運用に必要なもの
       - 認証局
       - 証明書レポジトリー
       - IPsecルーター
       - CA証明書
       - エンドエンティティー証明書
       - 証明書失効リスト
       - 識別名
       - LDAP URL
      - IPsec VPN構築のためのPKI設定手順

IPsec VPNの構築をサポートするPKI（Public Key Infrastructure）モジュールについて解説します。PKIモジュールを使うと、IPsec（ISAKMP）の相手認証にRSAデジタル署名（RSA Signature）を利用できるようになります。

> Note - PKIモジュールを使用するにはフィーチャーライセンスAT-FL-06またはAT-FL-06-Bが必要です。

PKIとは

PKI（Public Key Infrastructure）は、公開鍵暗号を安心して利用するための基盤技術です。公開鍵暗号の信頼性は、使用する公開鍵が本当に対象者のものであるかに依存しています。PKIシステムでは、認証局（CA）が発行する公開鍵証明書により、公開鍵とその所有者の関係を証明する仕組みが提供されています。
本製品では、オプションのフィーチャーライセンスAT-FL-06-Bをご購入いただくことにより、ITU-T X.509勧告の定める公開鍵証明書を利用したPKIシステムを使用することができます。PKIモジュールを使うことにより、IPsec VPNの相手ルーター認証にRSAデジタル署名を利用できるようになります。

IPsecとPKI

IPsec VPNでは、通信開始に先立ちISAKMPフェーズ1で相手機器（ルーターやVPNクライアント）の認証を行います。本製品がサポートしている相手認証方式は次の2つです。

- 事前共有鍵（pre-shared key）方式
  あらかじめ各ルーターに入力しておいたパスフレーズ（共有鍵）を使って相手を認証する方式。接続先の数だけ共有鍵を設定しておく必要がある。もっとも基本的な認証方式であり、オプションなしで使用できる。
- RSAデジタル署名（RSA Signature）方式
  相手から受け取ったデジタル署名を検証することによって相手を認証する方式。検証に必要なX.509公開鍵証明書は署名と一緒に入手できるため、接続先ごとに情報を登録しておく必要がない。正当な相手かどうかは、認証局が証明書を発行しているかどうかによって判断される。PKIフィーチャーライセンスが必要。

VPN機器の台数が多くなるにしたがい、事前共有鍵方式よりもRSAデジタル署名方式のほうが登録すべき鍵の数が少なくなるため、手間が軽減される傾向がありますが、どちらの方法を用いた場合でもIPsec VPNの機能自体に差異はありません。
RSAデジタル署名を用いる場合には、VPN機器の他にX.509証明書の発行や保管を行うコンピューターが必要となるため、事前共有鍵を用いた場合に比べてVPNシステムの規模が大きくなり、証明書の維持や管理のコストが発生します。
しかし、PKIは本製品がサポートするIPsec VPNだけでなく、SSL/TLSやS/MIMEなどのセキュリティーアプリケーションでも利用できることから、すでにPKIをベースとしたセキュリティーポリシーのもとでこうしたアプリケーションが利用されている場合は、本製品によるIPsec VPNをそのポリシーに統合できるメリットがあります。

PKIの運用に必要なもの

本製品のIPsec VPNでPKIを使用するためには、以下のものが必要になります。

認証局

各ルーターに対して、認証局自身のデジタル署名を施した公開鍵証明書を発行します。また、期限切れ前に無効となった証明書の一覧（証明書失効リスト）を管理する役割もあります。通常、認証局はUNIXやWindowsなどのOS上で動作するアプリケーションソフトウェアです。「CA（Certification Authority）」や「認証機関」などと呼ばれることもあります。

証明書レポジトリー

認証局が発行した公開鍵証明書や証明書失効リストを保管しているサーバーです。通常、LDAPなどのディレクトリーサーバーが使用されます。認証局と同じく、コンピューター上で動作する1アプリケーションです。認証局と同じコンピューター上で動作させる場合と、別のコンピューターで動作させる場合があります。また認証局によっては、レポジトリーを持たず、発行した証明書をファイルに書き出すだけのものもあります。

IPsecルーター

IPsecプロトコル群をサポートするVPN構築用のルーターです。本製品は、暗号処理チップをオンボード搭載しており、IPsecルーターとして機能します。VPNルーター、セキュリティーゲートウェイなどと呼ばれることもあります。また、PKIの用語では、PKIを利用するものという意味でエンドエンティティー（EE = End Entity）と呼びます。通常、PKIは認証局（CA）、証明書レポジトリー、エンドエンティティー（EE）の3要素で構成されます。

CA証明書

認証局自身の公開鍵証明書です。添付の公開鍵が間違いなく認証局のものであることを示しています。CA証明書は、認証局が発行した他のルーターの証明書が正しいものであるかどうかを検証するために用いられます。公開鍵証明書には、識別名（DN = Distinguished Name）と呼ばれる名前が付けられています。CA証明書の場合、識別名はCAの名前になります。また、CA証明書には有効期限が設定されています。認証局が1つしかない場合、CA証明書は認証局自身が自署して発行することになります。複数認証局がある場合は、認証局をツリー上の階層構造にして、上位の認証局が下位の認証局の証明書を発行します。ツリーの最上位に位置する認証局は、自分自身で証明書を発行します。最上位の認証局をルート認証局と呼び、その認証局の証明書はルートCA証明書と呼びます。認証局が1つしかない場合、その証明書はルートCA証明書となります。

エンドエンティティー証明書

エンドエンティティーであるIPsecルーターの公開鍵証明書です。各ルーターからの要求を受けて、認証局が発行します。ルーターAの公開鍵証明書は、添付の公開鍵がルーターAのものであることを証明する文書です。証明書には認証局のデジタル署名が施されているため、各ルーターでは、CA証明書に添付されている認証局の公開鍵を用いて、第三者による改変がされていないか確認することができます。エンドエンティティー証明書には、各ルーターを区別するための識別名（DN = Distinguished Name）と呼ばれる名前が付けられています。また、エンドエンティティー証明書には有効期限が設定されています。

証明書失効リスト

何らかの理由により有効期限前に無効となったエンドエンティティー証明書の一覧です。失効の理由としては、証明書記載内容（アドレス等）の変更や該当エンドエンティティーの運用停止などが挙げられます。証明書失効リストは、認証局が管理するもので、失効した証明書のシリアル番号が列挙されています。通常は、証明書レポジトリー上に置かれており、各エンドエンティティーが随時ダウンロードして利用できます。CRL（Certificate Revocation List）とも呼ばれます。

識別名

公開鍵証明書には、証明書に添付された公開鍵の所有者を示す名前が付けられています。たとえば、ルーターAの公開鍵証明書には、ルーターAを一意に識別できる名前が付けられています。この名前を識別名（DN = Distinguished Name）と呼びます。識別名は、c（国）、o（組織）、名前（cn）のようなさまざまな属性を組み合わせたもので、郵便で使われる住所やインターネットで使われるドメイン名と似ています。たとえば、ルーターAの識別名として、次のような名前を付けることができます。

`cn=RouterA,o=allied,c=jp`

識別名は次のような構文で表します。

    DISTNAME=“[cn=common-name, ]
      [list of [dc=domain-name-component, ]]
      [ou=organisation-unit-name, ] [o=organisation-name, ]
      [street=street-address, ] [st=state-or-province-name, ]
      [l=locality-name, ] [c=country-name, ]”

表 1：X.500識別名の属性
属性名 | 名称 | 説明
cn | Common Name（一般名） | 名前を示す文字列
dc | Domain Component（ドメイン構成要素） | インターネットドメイン名の構成要素をカンマ区切りで列挙したもの。たとえば、foo.bar.comというドメイン名に対応するdc属性は、"dc=foo, dc=bar, dc=com"のようになる
ou | Organisation Unit |
o | Organisation（組織名） | 組織を示す文字列
street | Street Address（街区住所） | 所在地（住所）を示す文字列
st | State（州/県など） | 所在地（住所）を示す文字列
l | Locality Name |
c | Country Name（国名） | 国コード（ISO3166）

識別名では、属性の順序が重要な意味を持ちます。通常は、詳細なもの（cnなど）から大まかなもの（cなど）の順に記述します。
本製品のIPsec VPNでは、個々のルーターの識別名は管理者が決定しますが、利用する認証局のポリシーによって使用できる属性に制限があるため、認証局の管理者と相談して決めてください。

LDAP URL

LDAP（Lightweight Directory Access Protocol）ディレクトリー上のファイルは、LDAP用のURL（Universal Resource Locator）で表すことができます。LDAP URLは次のような形式になります。

`ldap://address[:port]/[base-object]`

表 2：LDAP URLの要素
address | LDAPサーバーのIPアドレスかホスト名
port | LDAPサーバーのポート番号（1〜65535）
base-object | ファイルの識別名（DN）

IPsec VPN構築のためのPKI設定手順

デジタル署名を使用してVPNを構築する場合の設定手順について説明します。

1. 認証局に証明書の発行を要求する。
   証明書発行要求は、RSA Laboratoriesの定めるPKCS#10形式ファイルによるオフライン要求と、RFC2510などで定められているPKIX-CMPプロトコルによるオンライン要求があります。どちらの方式を使用するかは、認証局の管理者にご相談ください。なお、証明書を要求するにあたっては、証明対象となる自分自身のRSA公開鍵ペアを作成し、また、自分の識別名を設定しておく必要があります。
   ■ 証明書の発行対象となるRSA公開鍵ペアを作成するにはCREATE ENCO KEYコマンドを使います。

   `CREATE ENCO KEY=0 TYPE=RSA LENGTH=1024 ↓`
   ■ 公開鍵証明書の発行を要求するには、ルーター自身のX.500識別名（DN = Distinguished Name）を設定しておく必要があります。これは、SET SYSTEM DISTINGUISHEDNAMEコマンドで行います。DNの属性（c、o、cnなど）は小文字で記述する必要がありますのでご注意ください。

   `SET SYSTEM DISTINGUISHEDNAME="cn=RouterA,o=birds,c=jp" ↓`
   ■ PKIで使用される時刻はUTC（協定世界時）なので、ルーターを使用している地域の現地時間とUTCとの時差を設定しておきます。

   `SET NTP UTCOFFSET=JST ↓`
   ■ 証明書発行要求（CSR）を作成するには、CREATE PKI ENROLLMENTREQUESTコマンドを使います。手動方式（PROTOCOL=MANUAL）では、発行要求がファイルに書き出されますので、そのファイルを認証局（CA）に渡して証明書の発行を依頼してください。ファイル名はENROLLMENTREQUESTパラメーターに指定した名前に拡張子「.csr」が付いたものになります。また、ファイルの形式はPKCS#10形式とします。

   `CREATE PKI ENROLLMENTREQUEST=mycer PROTO=MANUAL KEYPAIR=0 TYPE=PKCS10 FORMAT=PEM ↓`
   ■ 手動方式の場合、作成した証明書発行要求（CSR）ファイルを別のコンピューターにアップロードします。アップロードしたファイルをCAアプリケーションに渡し、証明書の発行を依頼してください。

   `UPLOAD FILE=mycer.cer SERVER=192.168.1.5 ↓`
   ■ 証明書発行要求を直接CAに送信するには、CAがCMP（Certificate Management Protocol）をサポートしている必要があります。その場合、証明書の形式はPKIX（デフォルト）とします。REFERENCE（参照番号）とSECRET（承認コード）については、CAの管理者に確認した上で入力してください。

   `CREATE PKI ENROLLMENTREQUEST=mycer PROTO=CMP KEYPAIR=0 REF=98765432 SECRET=fugafuga LOCATION=192.168.1.5 ↓`

   > Note - ご利用の認証局によっては、承認コードのフォーマットが本製品の期待しているものと異なる場合があります。たとえば、Entrust社の認証局は「SLS7-6PNC-TWPR」のようなフォーマットですが、この場合ハイフンと最終桁のチェックストリングは入力不要です。

2. 発行された証明書をルーターの証明書データベースに登録する。
   認証局によって発行された証明書は、証明書レポジトリー（LDAPサーバーなど）に置かれる場合と、ファイルで提供される場合があります。レポジトリー上に置かれている場合は、LDAPによってルーターの証明書データベースに直接ロードできます。一方、ファイルで提供された場合は、TFTP等でいったんルーターのファイルシステム上に転送した上で、証明書データベースに登録します。
   いずれの場合も、ロードした証明書が正しいかどうかを検証するため、CA証明書が必要になります。最初にCA証明書を登録してください。
   ■ 証明書がLDAPレポジトリーに置かれている場合は、ADD PKI CERTIFICATEコマンドを使って、レポジトリーから直接データベースに取り込むことができます。最初にCA証明書を登録します。LOCATIONパラメーターに、CA証明書を示すLDAP URLを指定してください。CERTIFICATEパラメーターに指定する文字列は、証明書データベース内で各証明書を識別するための名前で任意です。TYPEパラメーターにはCA証明書であることを示す「CA」を指定します。

   `ADD PKI CERTIFICATE=cacert LOCATION="ldap://172.16.10.1/o=test,c=jp" TYPE=CA ↓`
   ■ 証明書がファイルで提供されている場合は、TFTPサーバーなどを利用して、CA証明書ファイルをいったんルーターのファイルシステム上にダウンロードします。証明書ファイルの拡張子は.cerとします。

   `LOAD FILE=ca.cer SERVER=192.168.1.5 ↓`
   次に、ダウンロードした認証局の証明書ファイルをシステムの証明書データベースに登録します。TYPEパラメーターにはCA証明書であることを示す「CA」を指定します。

   `ADD PKI CERTIFICATE=cacer LOCATION=ca.cer TYPE=CA ↓`
   ■ CA証明書を登録したら、SHOW PKI CERTIFICATEコマンドを実行してCA証明書の内容を表示し、別途入手したプリントアウト等と見比べ、間違いなくCAの証明書であるかどうかを検証してください。

   `SHOW PKI CERTIFICATE=cacer ↓`

   > Note - 証明書内容の検証方法については、認証局の管理者にご確認ください。

   ■ 確認ができたら、CA証明書を信頼できるものとして受け入れるため、次のコマンドを実行します。これは、CA証明書「cacer」を信頼するという意思表示です。これを実行しないと、CA証明書を使用できません。

   `SET PKI CERTIFICATE=cacer TRUSTED=TRUE ↓`

   > Note - CA証明書を登録する際、直接認証局から証明書を入手したりしてCA証明書の信頼性が極めて高いと考えられるときは、ADD PKI CERTIFICATEコマンドを実行するときにTRUSTED=TRUEを付けることで、証明書の確認を省略することができます。ただし、証明書すり替え等のリスクを十分認識した上で行ってください。

   ■ CA証明書を登録したら、次に発行された自分の証明書を登録します。証明書がレポジトリーに置かれている場合は、ADD PKI CERTIFICATEコマンドを使って、レポジトリーから直接データベースに取り込むことができます。LOCATIONパラメーターに、自分の証明書を示すLDAP URLを指定してください。TYPEパラメーターには自分自身の証明書であることを示す「SELF」を指定します。

   `ADD PKI CERTIFICATE=mycert LOCATION="ldap://172.16.10.1/cn=RouterA,o=birds,c=jp" TYPE=SELF ↓`
   ■ 証明書がファイルで提供されている場合は、TFTPサーバーなどを利用して、自分の証明書ファイルをいったんルーターのファイルシステム上にダウンロードします。証明書ファイルの拡張子は.cerとします。

   `LOAD FILE=mine.cer SERVER=192.168.1.5 ↓`
   次に自分自身の証明書をデータベースに登録します。

   `ADD PKI CERTIFICATE=mycer LOCATION=mine.cer TYPE=SELF ↓`
3. 証明書失効リスト（CRL）をルーターのCRLデータベースに登録する。
   認証局が証明書失効リスト（CRL）をサポートしている場合、リストをCRLデータベースにロードすることにより、他者の証明書が失効していないかどうかを確認できるようになります。証明書失効リストも、レポジトリーに置かれる場合とファイルで提供される場合があります。証明書のロードと同様の操作でリストを登録してください。LDAPレポジトリーに置かれている場合は、指定した間隔でリストを自動更新することも可能です。
   ■ 証明書失効リストがLDAPレポジトリーに置かれている場合は、ADD PKI CRLコマンドで直接データベースに登録できます。CRLのLDAP URLについては、認証局の管理者にご確認ください。LDAPサーバーからCRLを登録した場合は、一定の間隔でCRLの自動取得・更新が行われます。更新間隔のデフォルトは24時間ですが、SET PKIコマンドのCRLUPDATEPERIODパラメーターで変更も可能です。

   `ADD PKI CRL=ourcrl LOCATION="ldap://172.16.10.1/cn=crl1,o=test,c=jp" ↓`
   ■ CRLがファイルで提供されている場合は、TFTPサーバーなどを利用して、CRLファイルをいったんルーターのファイルシステム上にダウンロードします。CRLファイルの拡張子は.crlとします。

   `LOAD FILE=ca.crl SERVER=192.168.1.5 ↓`
   次にCRLファイルを指定して、CRLをデータベースに登録します。

   `ADD PKI CRL=ca_crl LOCATION=ca.crl ↓`

   > Note - CRLをファイルから登録した場合は、認証局がCRLを更新するたびにルーターの管理者が手動で上記の手順を再実行し、ルーターのデータベース上のCRLを更新する必要があります。

4. IPsecの設定を行う
   ISAKMPポリシーの作成時に、認証方式としてRSAデジタル署名（RSASIG）を指定し、自分のRSA公開鍵ペアを指定することにより、デジタル署名を利用したIPsecが利用できるようになります。実際のIPsec通信時には、ISAKMP/IKEプロトコルにより、接続相手の証明書を自動的に確認します。これ以降は、ロードされた証明書や証明書失効リストを用いて接続相手の認証を自動的に行います。
   ■ IPsecルーターのグローバルIPアドレスが固定されている場合、次のようにしてISAKMPポリシーを作成します。PEERには相手ルーターのアドレスを、AUTHTYPEにはRSAデジタル署名を示すRSASIGを、LOCALRSAKEYには自分のRSA公開鍵ペアの番号を指定します。

   `CREATE ISAKMP POLICY=i PEER=12.34.56.78 AUTHTYPE=RSASIG LOCALRSAKEY=1 SENDN=TRUE ↓`
   ■ 片一方のIPsecルーターのグローバルIPアドレスが固定されていない場合（ダイヤルアップ環境など）は、アドレス固定側と不定側で設定が異なります。
   アドレスが一定のセンター側では、次のようにしてISAKMPポリシーを作成します。PEERには相手ルーターのアドレスが不定なためANYを指定し、さらにREMOTEIDパラメーターで相手の識別名を指定します。AUTHTYPEにはRSAデジタル署名を示すRSASIGを、LOCALRSAKEYには自分のRSA公開鍵ペアの番号を指定します。

   `CREATE ISAKMP POLICY=i PEER=ANY MODE=AGGRESSIVE AUTHTYPE=RSASIG LOCALRSAKEY=1 SENDN=TRUE REMOTEID="cn=RouterB,o=birds,c=jp" ↓`
   一方、アドレスが不定のリモート側では、次のようにしてISAKMPポリシーを作成します。PEERにはセンター側ルーターのIPアドレスを指定します。AUTHTYPEにはRSAデジタル署名を示すRSASIGを、LOCALRSAKEYには自分のRSA公開鍵ペアの番号を指定します。

   `CREATE ISAKMP POLICY=i PEER=12.34.43.21 MODE=AGGRESSIVE AUTHTYPE=RSASIG LOCALRSAKEY=1 SENDN=TRUE ↓`
5. 証明書を更新する
   証明書には有効期限があるため、継続して使用する場合は有効期限が満了する前に手順1からの手順を再度行う必要があります。

(C) 2005-2012 アライドテレシスホールディングス株式会社

PN: J613-M0710-03 Rev.H