ワークロードバランスの証明書
XenServerとワークロードバランスサーバーは、HTTPSを使用して通信します。ワークロードバランス仮想アプライアンスの設定時に、ウィザードにより自己署名入りのテスト証明書が自動的に作成されます。このテスト証明書により、ワークロードバランスとXenServerとのTLS接続が確立されます。このTLS接続は、XenServerでデフォルトで自動的に作成されます。ワークロードバランス仮想アプライアンスの設定時および設定後に追加の証明書設定を行う必要はありません。
注:
自己署名入りのテスト証明書はHTTPS通信を行うための代替証明書であり、信頼された証明機関からの証明書ではありません。セキュリティを向上させるために、信頼された証明機関からの証明書を使用することをお勧めします。
信頼されていない証明機関からの証明書を使用する場合は、ワークロードバランス仮想アプライアンスとXenServerでその証明書が使用されるように設定する必要がります。
デフォルトでは、XenServerにより、ワークロードバランス仮想アプライアンスとの接続を確立する前に証明書の同一性は検証されません。XenServerで特定の証明書を検証するようにするには、その証明書の署名に使用されたルート証明書をエクスポートします。証明書をXenServerにコピーし、ワークロードバランスへの接続時に証明書をチェックするようにXenServerを構成します。この場合、XenServerはクライアントとして動作し、ワークロードバランス仮想アプライアンスはサーバーとして動作します。
環境のセキュリティポリシーに応じて、以下のいずれかを行います。
注:
証明書の検証機能は、不正な接続を防ぐ目的で設計されています。ワークロードバランスの証明書が厳密な要件を満たさない場合は、証明書の検証に失敗します。証明書の検証に失敗すると、XenServerとワークロードバランス仮想アプライアンスの接続が確立されません。
証明書を検証するには、XenServerが特定できる適切な場所に証明書が格納されている必要があります。
XenServerで自己署名証明書の検証を設定する
XenServerがワークロードバランス仮想アプライアンスとの接続を確立するときに、XenServerがXenServerワークロードバランス自己署名証明書を検証するように設定できます。
重要:
XenServerワークロードバランスの自己署名証明書をXenServerで検証する場合は、ホスト名を指定してワークロードバランス仮想アプライアンスに接続する必要があります。ワークロードバランスのホスト名を確認するには、仮想アプライアンス上で
hostname
コマンドを実行します。
自己署名証明書を検証するようにXenServerを構成するには、次の手順を実行します:
-
ワークロードバランス仮想アプライアンス上の自己署名入り証明書をプールコーディネーターにコピーします。XenServerワークロードバランスの自己署名証明書は
/etc/ssl/certs/server.pem
に保存されます。これを行うには、プールコーディネーターで次のコマンドを実行します:scp root@<wlb-ip>:/etc/ssl/certs/server.pem . <!--NeedCopy-->
-
ワークロードバランス仮想アプライアンスのIPアドレス(
wlb-ip
)の信頼性を確認できないという内容のメッセージが表示されたら、「yes
」と入力して続行します。 -
プロンプトが表示されたら、ワークロードバランス仮想アプライアンスのルートパスワードを入力します。証明書が現在のフォルダーにコピーされます。
-
証明書をインストールします。証明書をコピーしたディレクトリで次のコマンドを実行します:
xe pool-certificate-install filename=server.pem <!--NeedCopy-->
-
プールコーディネーターで次のコマンドを実行して、証明書が正しくインストールされたことを確認します:
xe pool-certificate-list <!--NeedCopy-->
証明書が正しくインストールされた場合は、このコマンドの出力に、エクスポートされたルート証明書が含まれています。(このコマンドを実行すると、インストールされているすべてのTLS証明書が一覧表示されます)。
-
証明書をプールコーディネーターからすべてのホストへと同期させるには、プールコーディネーターで次のコマンドを実行します:
xe pool-certificate-sync <!--NeedCopy-->
プールコーディネーター上で
pool-certificate-sync
コマンドを実行すると、証明書および証明書失効一覧がプール内で同期されます。この操作により、リソースプール内のすべてのホストで同じ証明書が使用されるようになります。このコマンドを実行しても、何も出力されません。このコマンドが正しく実行されていない場合、次の手順も機能しません。
-
ワークロードバランス仮想アプライアンスとの接続を確立するときに、XenServerが証明書を検証するように設定します。これを行うには、プールコーディネーターで次のコマンドを実行します:
xe pool-param-set wlb-verify-cert=true uuid=uuid_of_pool <!--NeedCopy-->
ヒント:
プールのUUIDは、Tabキーを押すと自動で入力されます。
-
(オプション)このコマンドが正しく実行されたことを確認するには、以下の手順に従います:
-
プール内の他のホストに証明書が同期されたことを確認するには、それらのホストで
pool-certificate-list
コマンドを実行します。 -
XenServerが証明書を検証するように設定されていることを確認するには、
pool-param-get
コマンドにparam-name
=wlb-verify-certパラメーターを指定して実行します。例:xe pool-param-get param-name=wlb-verify-cert uuid=uuid_of_pool <!--NeedCopy-->
-
XenServerで証明機関からの証明書の検証を設定する
信頼された証明機関によって署名された証明書を検証するように、XenServerを設定できます。
信頼された機関からの証明書をXenServerで使用するには、公開キーを含んだ.pem
ファイルとしてエクスポートした証明書または証明書チェーン(中間証明書とルート証明書)が必要です。
信頼された機関からの証明書をワークロードバランスで使用する必要がある場合は、次のタスクを行います:
これらのタスクを実行する前に、以下の点を確認します:
-
XenServerのプールコーディネーターのIPアドレスが必要です。
-
XenServerでワークロードバランス仮想アプライアンスのホスト名を解決できる必要があります(XenServerプールコーディネーターのコンソールでワークロードバランス仮想アプライアンスの完全修飾ドメイン名を指定してpingを実行できるなど)。
信頼された証明機関からの署名入り証明書の入手
認証機関から証明書を取得するには、証明書署名要求(CSR)を生成する必要があります。ワークロードバランス仮想アプライアンスで、秘密キーを作成し、その秘密キーを使用してCSRを生成します。
証明書の一般名について
CSRの作成時に指定する一般名(CN:Common Name)は、ワークロードバランス仮想アプライアンスの完全修飾ドメイン名と正確に一致させる必要があります。また、[WLBサーバーへの接続] ダイアログボックスの [アドレス] ボックスで指定した完全修飾ドメイン名またはIPアドレスとも一致させる必要があります。
CNを指定するときは、以下のいずれかのガイドラインに従います。
-
[WLBサーバーへの接続] ダイアログボックスで指定したものと同じCNを指定する。
たとえば、ワークロードバランス仮想アプライアンスの名前が「
wlb-vpx.yourdomain
」である場合は、[WLBサーバーへの接続] ダイアログボックスで「wlb-vpx.yourdomain
」と指定し、CSRの作成時にCNとして「wlb-vpx.yourdomain
」と指定します。 -
IPアドレスを使用してプールをワークロードバランスに接続した場合は、完全修飾ドメイン名をCNとして使用し、IPアドレスをサブジェクトの別名(SAN)として指定します。ただし、このやり方では問題が生じる場合もあります。
秘密キーファイルの作成
ワークロードバランス仮想アプライアンスで、次の手順を実行します:
-
次のコマンドを実行して、秘密キーファイルを作成します。
openssl genrsa -des3 -out privatekey.pem 2048 <!--NeedCopy-->
-
パスワードを削除します:
openssl rsa -in privatekey.pem -out privatekey.nop.pem <!--NeedCopy-->
注:
不正なパスワードを入力すると、ユーザーインターフェイスエラーが発生したという内容のメッセージが表示されることがあります。このメッセージは無視して構いません。そのままコマンドを実行して秘密キーファイルを作成します。
証明書署名要求の作成
ワークロードバランス仮想アプライアンスで、次の手順を実行します:
-
秘密キーを使用して証明書署名要求を作成します:
openssl req -new -key privatekey.nop.pem -out csr <!--NeedCopy-->
-
画面のメッセージに従って以下の情報を入力し、証明書署名要求を生成します。
Country Name:TLS証明書の国コードを入力します。日本の国コードは「JP」です。国コードの一覧については、インターネット上を検索して入手できます。
State or Province Name(full name):プールが動作する場所の都道府県名を入力します。たとえば、東京の場合は「Tokyo」と入力します。
Locality Name:プールが動作する場所の市区町村名を入力します。
Organization Name:所属組織または会社の名前を入力します。
Organizational Unit Name:部門や部署の名前を入力します。この情報は入力しなくても構いません。
Common Name:ワークロードバランス仮想アプライアンスのFQDNを入力します。この値は、プールでワークロードバランス仮想アプライアンスに接続するときに使用した名前と一致する必要があります。詳しくは、「証明書の一般名について」を参照してください。
Email Address:証明書に含めるメールアドレスを入力します。
-
任意の属性を指定するか、Enterキーを押して次のステップに進みます。
現在のディレクトリに証明書署名要求が生成され、「
csr
」という名前で保存されます。 -
ワークロードバランスのアプライアンスコンソールで次のコマンドを実行して、コンソールウィンドウにCSRを表示します:
cat csr <!--NeedCopy-->
-
CSRの全内容をコピーし、この情報を使用して、証明機関に証明書を要求します。
新しい証明書の指定と適用
この手順では、ワークロードバランスで、認証機関からの証明書を使用するように指定します。この手順により、ルート証明書と中間証明書(該当する場合)がインストールされます。
新しい証明書を指定するには、次の手順を実行します:
-
証明機関から、署名入り証明書、ルート証明書、および中間証明書(証明機関により提供される場合)をダウンロードします。
-
証明書をワークロードバランス仮想アプライアンスに直接ダウンロードしなかった場合は、次のいずれかの方法で証明書をコピーします:
-
Windowsコンピューターから、WinSCPまたは別のコピーユーティリティを使用します。
この場合、ホスト名としてIPアドレスを指定して、デフォルトのポートを使用します。ユーザー名およびパスワードは、通常rootアカウントのものを使用します(ワークロードバランス仮想アプライアンスの設定時に指定したもの)。
-
Linuxコンピューターからワークロードバランスアプライアンスに、セキュアコピープロトコルまたは別のコピーユーティリティを使用します。例:
scp root_ca.pem root@wlb-ip:/path_on_your_WLB <!--NeedCopy-->
-
-
ワークロードバランス仮想アプライアンスで、すべての証明書(ルート証明書、中間証明書(インストールされている場合)、および署名入り証明書)の内容を統合して1つのファイルにします。次のコマンドを使用します:
cat signed_cert.pem intermediate_ca.pem root_ca.pem > server.pem <!--NeedCopy-->
-
次の移動コマンドを実行して、既存の証明書およびキーの名前を変更します:
mv /etc/ssl/certs/server.pem /etc/ssl/certs/server.pem_orig mv /etc/ssl/certs/server.key /etc/ssl/certs/server.key_orig <!--NeedCopy-->
-
次のコマンドを実行して、統合した証明書をコピーします。
mv server.pem /etc/ssl/certs/server.pem <!--NeedCopy-->
-
次のコマンドを実行して、先ほど作成した秘密キーをコピーします:
mv privatekey.nop.pem /etc/ssl/certs/server.key <!--NeedCopy-->
-
ルートユーザーだけが秘密キーを読み取れるようにします。権限を修正するには、
chmod
コマンドを実行します。chmod 600 /etc/ssl/certs/server.key <!--NeedCopy-->
-
stunnel
を再起動します:killall stunnel stunnel <!--NeedCopy-->
プールへの証明書チェーンのインポート
証明書を取得したら、XenServerのプールコーディネーターにインポートします。これらの証明書を使用するには、プール内のホストを同期させます。その後で、ワークロードバランスからの接続時に証明書が検証されるように、XenServerを設定します。
-
署名入り証明書、ルート証明書、および中間証明書(証明機関により提供される場合)をXenServerのプールコーディネーターにコピーします。
-
次のコマンドを実行して、ルート証明書をプールコーディネーターにインストールします:
xe pool-install-ca-certificate filename=root_ca.pem <!--NeedCopy-->
-
中間証明書を使用する場合は、それもプールコーディネーターにインストールします:
xe pool-install-ca-certificate filename=intermediate_ca.pem <!--NeedCopy-->
-
証明書が正しくインストールされたことを確認します。これを行うには、プールコーディネーターで次のコマンドを実行します:
xe pool-certificate-list <!--NeedCopy-->
このコマンドにより、インストールされているすべてのTLS証明書が一覧表示されます。インストールした証明書がこの一覧に含まれていることを確認します。
-
次のコマンドを実行して、プールコーディネーター上の証明書をプール内のすべてのホストに同期させます。
xe pool-certificate-sync <!--NeedCopy-->
プールコーディネーター上で
pool-certificate-sync
コマンドを実行すると、証明書および証明書失効一覧がプール内で同期されます。この操作により、リソースプール内のすべてのホストで同じ証明書が使用されるようになります。 -
ワークロードバランス仮想アプライアンスとの接続を確立するときに、XenServerが証明書を検証するように設定します。これを行うには、プールコーディネーターで次のコマンドを実行します:
xe pool-param-set wlb-verify-cert=true uuid=uuid_of_pool <!--NeedCopy-->
ヒント:
プールのUUIDは、Tabキーを押すと自動で入力されます。
-
証明書の検証を有効化する前に、[WLBへの接続]ダイアログボックスでIPアドレスを指定している場合は、プールとワークロードバランスを再接続するように求められることがあります。
[WLBサーバーへの接続] ダイアログボックスの [アドレス] ボックスに、ワークロードバランス仮想アプライアンスの完全修飾ドメイン名(証明書のCNと同じもの)を入力します完全修飾ドメイン名を入力して、CNが、XenServerで接続に使用される名前と一致していることを確認します。
トラブルシューティング
-
証明書の検証の設定後にプールからワークロードバランスに接続できなくなった場合は、証明書の検証を無効化し、接続できるか確認してください。
xe pool-param-set wlb-verify-cert=false uuid=uuid_of_pool
コマンドを使用して証明書の検証を無効にすることができます。証明書の検証を無効にして接続できる場合は、証明書の設定に問題があります。証明書の検証を無効にしても接続できない場合は、ワークロードバランス仮想アプライアンスの資格情報またはネットワーク接続の問題が考えられます。 -
一部の証明機関では、証明書のインストールを確認するためのツールが提供されています。ここで説明したタスクで問題が生じた場合は、これらのツールを使用して問題を特定してください。これらのツールでTLSポートを指定する必要がある場合は、ポート8012またはワークロードバランス仮想アプライアンスの設定時に指定したポート番号を使用します。
-
[WLB] タブに接続エラーが表示される場合は、証明書のCNとワークロードバランス仮想アプライアンスの名前が競合している可能性があります。ワークロードバランス仮想アプライアンス名と証明書のCNは完全に一致する必要があります。
詳しくは、「トラブルシューティング」を参照してください。