libvirtでTLS接続
リモートからvirt-manager等でlibvirtdに接続しようとするとsshを使うのが一番手っ取り早いのですが、
うちの環境だと頻繁にトラフィックが詰まって(?)sshがゾンビ化してしまうので、TLS接続に切り替えてみた。
環境はサーバー、クライアント共にFedora16。
独自CAはWindowsの証明書サービスを使っているので、そこは割愛。
それぞれ必要なものは、
libvirt(サーバ)側
Path | 説明 |
---|---|
/etc/pki/CA/cacert.pem | 独自CAのCA証明書 |
/etc/pki/libvirt/private/serverkey.pem | 秘密鍵 |
/etc/pki/libvirt/servercert.pem | 独自CAで発行したサーバ証明書 |
virt-manager(クライアント)側
Path | 説明 |
---|---|
/etc/pki/CA/cacert.pem | 独自CAのCA証明書 |
/etc/pki/libvirt/private/clientkey.pem | 秘密鍵 |
/etc/pki/libvirt/clientcert.pem | 独自CAで発行したクライアント証明書 |
以下おおまかな証明書発行の流れ
# 秘密鍵生成 $> openssl genrsa -out hoghoge.key 2048 # 証明書要求 # CN(Common Name)はvirt-managerで接続するホスト名にする $> openssl req -new -key hogehoe.key -out hogehoge.csr # 証明書サービスで証明書発行 # opensslで独自CAを作っている場合はそれを使う。 <割愛> # pem形式に変換 $> openssl x509 -in hogehoge.cer -outform pem -out hogehoge.pem
Fedoraの場合は/etc/sysconfig/libvirtdの
# Listen for TCP/IP connections # NB. must setup TLS/SSL keys prior to using this # LIBVIRTD_ARGS="--listen"
のコメントを
# Listen for TCP/IP connections # NB. must setup TLS/SSL keys prior to using this LIBVIRTD_ARGS="--listen"
としてやるとTLS接続を受け付けるようになります。
あとはvirt-managerで「証明書付き SSL/TLS」で接続してあげれば接続できるはずです。
しかし接続が不安定なのはTLSでも変わらなかったので、環境の問題のようです。