Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

18.3. TLS および SSL でのリモート管理

TLS プロトコルおよび SSL プロトコルを使用して仮想マシンを管理できます。TLS および SSL はより優れたスケーラビリティーを提供しますが、SSH よりも複雑です( 「SSH でのリモート管理」)。TLS と SSL は、セキュアな接続のために Web ブラウザーで使用されるのと同じ技術です。libvirt 管理接続は、受信接続の TCP ポートを開きます。これは、x509 証明書に基づいて安全で、認証されます。以下の手順では、TLS および SSL 管理用の認証証明書を作成およびデプロイする手順を説明します。

手順18.1 TLS 管理用の認証局(CA)キーの作成

  1. 開始する前に、gnutls-utils がインストールされていることを確認します。インストールされていない場合は、インストールします。
    # yum install gnutls-utils 
  2. 以下のコマンドを使用して秘密鍵を生成します。
    # certtool --generate-privkey > cakey.pem
  3. キーが生成されたら、鍵を自己署名できるように署名ファイルを作成します。これを実行するには、署名の詳細が含まれるファイルを作成し、ca.info という名前を付けます。このファイルには、以下の内容が含まれている必要があります。
    cn = Name of your organization
    ca
    cert_signing_key
    
  4. 以下のコマンドを使用して、自己署名鍵を生成します。
    # certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pem
    ファイルの生成後、rm コマンドを使用して ca.info ファイルを削除できます。生成プロセスから得られるファイルは cacert.pem です。このファイルは公開鍵(証明書)です。読み込まれたファイル cakey.pem は秘密鍵です。セキュリティー上の理由から、このファイルはプライベートに維持され、共有領域には含まれません。
  5. cacert.pem CA 証明書ファイルを /etc/pki/CA/cacert.pem ディレクトリー内のすべてのクライアントおよびサーバーにインストールして、CA が発行する証明書が信頼できることに注意してください。このファイルの内容を表示するには、次のコマンドを実行します。
    # certtool -i --infile cacert.pem
    これは、CA の設定に必要なだけです。クライアントとサーバーの証明書を発行する必要があるので、CA の秘密鍵を安全に維持します。

手順18.2 サーバー証明書の発行

この手順では、X.509 Common Name(CN)フィールドがサーバーのホスト名に設定された証明書を発行する方法を説明します。CN は、クライアントがサーバーへの接続に使用するホスト名と一致する必要があります。この例では、クライアントは URI を使用してサーバーに接続します (qemu://mycommonname/system )。そのため、CN フィールドは同じでなければなりません(この例では "mycommoname")。
  1. サーバーの秘密鍵を作成します。
    # certtool --generate-privkey > serverkey.pem
  2. まず server.info というテンプレートファイルを作成して、CA の秘密鍵の署名を生成します。CN がサーバーのホスト名と同じに設定されていることを確認します。
    organization = Name of your organization
    cn = mycommonname
    tls_www_server
    encryption_key
    signing_key
    
  3. 証明書を作成します。
    # 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: サーバーの公開鍵
  4. 秘密鍵の場所を保持するようにしてください。ファイルの内容を表示するには、以下のコマンドを使用します。
    # certtool -i --infile servercert.pem
    このファイルを開く際、CN= パラメーターは先に設定した CN と同じになります。例: mycommonname
  5. 以下の場所に 2 つのファイルをインストールします。
    • ServerKey.pem - サーバーの秘密鍵。このファイルを /etc/pki/libvirt/private/serverkey.pemの場所に置きます。
    • serverCert.pem: サーバーの証明書サーバー (/etc/pki/libvirt/servercert.pem)の場所にインストールします。

手順18.3 クライアント証明書の発行

  1. すべてのクライアント (virt-managerなど、libvirt にリンクしているプログラム)について、X.509 識別名(DN)フィールドで証明書を適切な名前に発行する必要があります。これは企業レベルで決定する必要があります。
    たとえば、以下の情報が表示されます。
    C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_client
  2. 秘密鍵を作成します。
    # certtool --generate-privkey > clientkey.pem
  3. 最初に client.info というテンプレートファイルを作成して、CA の秘密鍵の署名を生成します。このファイルには、以下のものが含まれている必要があります(このフィールドは、リージョン/場所を反映するようにカスタマイズする必要があります)。
    country = USA
    state = North Carolina
    locality = Raleigh
    organization = Red Hat
    cn = client1
    tls_www_client
    encryption_key
    signing_key
    
  4. 以下のコマンドを使用して証明書に署名します。
    # certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem --template client.info --outfile clientcert.pem
  5. クライアントマシンに証明書をインストールします。
    # cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem
    # cp clientcert.pem /etc/pki/libvirt/clientcert.pem

このページには機械翻訳が使用されている場合があります (詳細はこちら)。