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. /etc/pki/CA/cacert.pem ディレクトリー内のすべてのクライアントおよびサーバーに cacert.pem CA 証明書ファイルをインストールして、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