Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

第2章 認証とセキュリティー

2.1. TLS/SSL 証明書

Red Hat Virtualization API には Hypertext Transfer Protocol Secure (HTTPS) が必要です。 [1] SDK や CLI コンポーネントなどのクライアントソフトウェアとのセキュアな対話これには、サーバーが使用する CA 証明書を取得して、クライアントの証明書ストアにインポートする必要があります。

2.1.1. CA 証明書の取得

Red Hat Virtualization Manager から CA 証明書を取得し、以下のいずれかの方法でクライアントマシンに転送できます。

方法 1

CA 証明書の取得で推奨の方法は、openssl s_client コマンドラインツールを使用してサーバーとの実際の TLS ハンドシェイクを実行し、サーバーが提示する証明書を抽出する方法です。以下のようなコマンドを実行します。

$ openssl s_client \
-connect myengine.example.com:443 \
-showcerts \
< /dev/null

このコマンドはサーバーに接続し、以下のような出力を表示します。

CONNECTED(00000003)
depth=1 C = US, O = Example Inc., CN = myengine.example.com.23416
verify error:num=19:self signed certificate in certificate chain
---
Certificate chain
 0 s:/C=US/O=Example Inc./CN=myengine.example.com
   i:/C=US/O=Example Inc./CN=myengine.example.com.23416
-----BEGIN CERTIFICATE-----
MIIEaTCCA1GgAwIBAgICEAQwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCVVMx
FTATBgNVBAoTDEV4YW1wbGUgSW5jLjEjMCEGA1UEAxMaZW5naW5lNDEuZXhhbXBs
SVlJe7e5FTEtHJGTAeWWM6dGbsFhip5VXM0gfqg=
-----END CERTIFICATE-----
 1 s:/C=US/O=Example Inc./CN=myengine.example.com.23416
   i:/C=US/O=Example Inc./CN=myengine.example.com.23416
-----BEGIN CERTIFICATE-----
MIIDxjCCAq6gAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCVVMx
FTATBgNVBAoTDEV4YW1wbGUgSW5jLjEjMCEGA1UEAxMaZW5naW5lNDEuZXhhbXBs
Pkyg1rQHR6ebGQ==
-----END CERTIFICATE-----

------BEGIN CERTIFICATE----------END CERTIFICATE----- のマークの間のテキストは、サーバーで提示された証明書が表示されます。最初のものはサーバー自体の証明書で、最後の証明書は CA の証明書です。これらのマークを含む CA 証明書を ca.crt ファイルにコピーします。結果は以下のようになります。

-----BEGIN CERTIFICATE-----
MIIDxjCCAq6gAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCVVMx
FTATBgNVBAoTDEV4YW1wbGUgSW5jLjEjMCEGA1UEAxMaZW5naW5lNDEuZXhhbXBs
Pkyg1rQHR6ebGQ==
-----END CERTIFICATE-----
重要

これは、サーバーが使用する CA 証明書を取得する最も信頼性の高い方法です。ここで説明されている残りの方法はほとんどの場合に機能しますが、サーバーの管理者が手動で置き換えられた場合は、正しい CA 証明書は取得されません。

方法 2

上記の openssl s_client メソッドを使用できない場合は、コマンドラインツールを使用して Red Hat Virtualization Manager から CA 証明書をダウンロードできます。

コマンドラインツールの例には、curlwget などがあります。これらはいずれも、複数のプラットフォームで利用できます。

curl を使用している場合:

$ curl \
--output ca.crt \
'http://myengine.example.com/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA'

wget を使用している場合:

$ wget \
--output-document ca.crt \
'http://myengine.example.com/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA'
方法 3

Web ブラウザーを使用して、配置されている証明書に移動します。

https://myengine.example.com/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA

選択したブラウザーに応じて、証明書はブラウザーのキーストアにダウンロードまたはインポートします。

  1. ブラウザーにより証明書がダウンロードされた場合 には、ファイルを ca.crt として保存します。
  2. ブラウザーにより証明書がインポートされた場合 には、ブラウザーの認定オプションから証明書をエクスポートし、ca.crt として保存します。
方法 4

Red Hat Virtualization Manager にログインし、トラストストアから証明書をエクスポートして、クライアントマシンにコピーします。

  1. Red Hat Virtualization Manager マシンに root としてログインします。
  2. Java keytool 管理ユーティリティーを使用して、トラストストアから証明書をエクスポートします。

    # keytool \
    -keystore /etc/pki/ovirt-engine/.truststore \
    -storepass mypass \
    -exportcert \
    -alias cacert \
    -rfc \
    -file ca.crt

    これにより、ca.crt という名前の証明書ファイルが作成されます。

  3. scp コマンドを使用して、証明書をクライアントマシンにコピーします。

    $ scp ca.crt myuser@myclient.example.com:/home/myuser/.

これらの各メソッドにより、クライアントマシンの ca.crt という名前の証明書ファイルが作成されます。次に、このファイルをクライアントの証明書ストアにインポートする必要があります。

2.1.2. クライアントへの証明書のインポート

クライアントへの証明書のインポートは、クライアントが証明書を保存し、解釈する方法に依存します。証明書のインポートに関する詳細は、クライアントのドキュメントを参照してください。



[1] HTTPS は、RFC 2818 HTTP over TLS で説明されています。