Show Table of Contents
19.3. TLS と SSL 経由のリモート管理
TLS と SSL プロトコルを使って仮想マシンを管理することができます。TLS と SSL によりスケーラビリティーが向上しますが、SSH を使用する場合より複雑になります (「SSH によるリモート管理」を参照)。TLS と SSL は安全な接続を確保するために Web ブラウザーで使用される同一の技術です。
libvirt 管理接続は、着信接続用の TCP ポートを開きます。この接続には安全な暗号化が行われ、x509 証明書に基づいて認証されます。TLS と SSL での管理に必要な認証用証明書を作成し、実装する方法を以下に示します。
手順19.1 TLS 管理の認証局 (CA) キーを作成する
- まず、
gnutls-utilsがインストールされていることを確認します。インストールされていない場合は、そのインストールを行います。#
yum install gnutls-utils - 次のコマンドを使ってプライベートキーを生成します。
#
certtool --generate-privkey > cakey.pem - キーを生成したら、次にキーに自己署名できるよう署名ファイルを作成します。署名の詳細を含むファイルを作成して、
ca.infoという名前を付けます。このファイルには次の行を含めてください。cn = Name of your organization ca cert_signing_key
- 自己署名キーを次のコマンドで生成します。
#
certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pemファイルを生成し終わったら、rmコマンドでca.infoファイルを削除できます。生成プロセスで作成されたファイルにはcacert.pemという名前が付けられます。このファイルがパブリックキー (証明書) になります。ロードしたファイルcakey.pemがプライベートキーです。セキュリティー保護のため、このファイルは共有スペースには保管しないようにし、このキーは機密扱いにしてください。 cacert.pemCA 証明書ファイルをすべてのクライアントおよびサーバーの/etc/pki/CA/cacert.pemディレクトリーにインストールし、この CA で発行した証明書は信頼できる証明書であることを通知します。このファイルの内容を表示するには、次のコマンドを実行します。#
certtool -i --infile cacert.pem認証局の設定は以上です。認証局のプライベートキーは安全な場所に保管してください。クライアントやサーバーの証明書を発行する際に必要となります。
手順19.2 サーバー証明書の発行
以下の手順は、X.509 CommonName (CN) フィールドをサーバーのホスト名に設定して証明書を発行する方法を示しています。CN は、クライアントがサーバーに接続する際に使用するホスト名と一致しなければなりません。この例では、クライアントは
qemu://mycommonname/system という URI を使用してサーバーに接続するので、CN フィールドも同様に「mycommonname」にする必要があります。
- サーバーのプライベートキーを作成します。
#
certtool --generate-privkey > serverkey.pem - まず
server.infoという名前のテンプレートファイルを作成して認証局のプライベートキー用の署名を生成します。CN にはサーバーのホスト名と同じ名前を必ず設定してください。organization = Name of your organization cn = mycommonname tls_www_server encryption_key signing_key
- 証明書を作成します。
#
certtool --generate-certificate --load-privkey serverkey.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \ --template server.info --outfile servercert.pem次の 2 種類のファイルが生成されます。- serverkey.pem - サーバーのプライベートキー
- servercert.pem - サーバーのパブリックキー
- プライベートキーを保存する場所は機密扱いにしてください。ファイルの内容を表示するには、次のコマンドを使用します。
#
certtool -i --infile servercert.pemこのファイルを開いた場合、CN=パラメーターが前の手順で設定した CN と同じであることを確認してください。この例の場合はmycommonnameになります。 - この 2 つのファイルを次の場所にインストールします。
serverkey.pem- サーバーのプライベートキーです。このファイルは「/etc/pki/libvirt/private/serverkey.pem」に配置します。servercert.pem- サーバーの証明書です。このファイルはサーバーの「/etc/pki/libvirt/servercert.pem」に配置します。
手順19.3 クライアント証明書の発行
- すべてのクライアント (virt-manager など libvirt でリンクしているすべてのプログラム) について、適切な名前に設定された X.509 Distinguished Name (DN) フィールドで証明書を発行する必要があります。これを実行するかどうかについては企業レベルで検討する必要があります。たとえば、次のような情報を使用するとします。
C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_client
- プライベートキーを作成します。
#
certtool --generate-privkey > clientkey.pem - まず
client.infoという名前のテンプレートファイルを作成して、認証局のプライベートキーの署名を生成します。ファイルには次の行が含めます (地域や場所に応じてフィールドをカスタマイズしてください)。country = USA state = North Carolina locality = Raleigh organization = Red Hat cn = client1 tls_www_client encryption_key signing_key
- 次のコマンドで証明書に署名します。
#
certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem --template client.info --outfile clientcert.pem - 証明書をクライアントマシンにインストールします。
#
cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem#cp clientcert.pem /etc/pki/libvirt/clientcert.pem

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.