1 <?xml version=
"1.0" encoding=
"UTF-8"?>
3 <html xmlns=
"http://www.w3.org/1999/xhtml">
5 <h1 >Remote support
</h1>
7 Libvirt allows you to access hypervisors running on remote
8 machines through authenticated and encrypted connections.
13 <a id=
"Remote_basic_usage">Basic usage
</a>
16 On the remote machine,
<code>libvirtd
</code> should be running in general.
17 See
<a href=
"#Remote_libvirtd_configuration">the section
18 on configuring libvirtd
</a> for more information.
21 Not all hypervisors supported by libvirt require a running
22 <code>libvirtd
</code>. If you want to connect to a VMware ESX/ESXi or
23 GSX server then
<code>libvirtd
</code> is not necessary. See the
24 <a href=
"drvesx.html">VMware ESX page
</a> for details.
27 To tell libvirt that you want to access a remote resource,
28 you should supply a hostname in the normal
<a href=
"uri.html">URI
</a> that is passed
29 to
<code>virConnectOpen
</code> (or
<code>virsh -c ...
</code>).
30 For example, if you normally use
<code>qemu:///system
</code>
31 to access the system-wide QEMU daemon, then to access
32 the system-wide QEMU daemon on a remote machine called
33 <code>compute1.libvirt.org
</code> you would use
34 <code>qemu://compute1.libvirt.org/system
</code>.
37 The
<a href=
"#Remote_URI_reference">section on remote URIs
</a>
38 describes in more detail these remote URIs.
41 From an API point of view, apart from the change in URI, the
42 API should behave the same. For example, ordinary calls
43 are routed over the remote connection transparently, and
44 values or errors from the remote side are returned to you
45 as if they happened locally. Some differences you may notice:
48 <li> Additional errors can be generated, specifically ones
49 relating to failures in the remote transport itself.
</li>
50 <li> Remote calls are handled synchronously, so they will be
51 much slower than, say, direct hypervisor calls.
</li>
54 <a id=
"Remote_transports">Transports
</a>
57 Remote libvirt supports a range of transports:
60 <dt><code>tls
</code></dt>
61 <dd><a href=
"http://en.wikipedia.org/wiki/Transport_Layer_Security" title=
"Transport Layer Security">TLS
</a>
62 1.0 (SSL
3.1) authenticated and encrypted TCP/IP socket, usually
63 listening on a public port number. To use this you will need to
64 <a href=
"#Remote_certificates" title=
"Generating TLS certificates">generate client and
65 server certificates
</a>.
66 The standard port is
16514.
68 <dt><code>unix
</code></dt>
69 <dd> Unix domain socket. Since this is only accessible on the
70 local machine, it is not encrypted, and uses Unix permissions or
71 SELinux for authentication.
72 The standard socket names are
73 <code>/var/run/libvirt/libvirt-sock
</code> and
74 <code>/var/run/libvirt/libvirt-sock-ro
</code> (the latter
75 for read-only connections).
77 <dt><code>ssh
</code></dt>
78 <dd> Transported over an ordinary
79 <a href=
"http://www.openssh.com/" title=
"OpenSSH homepage">ssh
80 (secure shell)
</a> connection.
81 Requires
<a href=
"http://netcat.sourceforge.net/">Netcat (nc)
</a>
82 installed and libvirtd should be running
83 on the remote machine. You should use some sort of
84 ssh key management (eg.
85 <a href=
"http://mah.everybody.org/docs/ssh" title=
"Using ssh-agent with ssh">ssh-agent
</a>)
86 otherwise programs which use
87 this transport will stop to ask for a password.
</dd>
88 <dt><code>ext
</code></dt>
89 <dd> Any external program which can make a connection to the
90 remote machine by means outside the scope of libvirt.
</dd>
91 <dt><code>tcp
</code></dt>
92 <dd> Unencrypted TCP/IP socket. Not recommended for production
93 use, this is normally disabled, but an administrator can enable
94 it for testing or use over a trusted network.
95 The standard port is
16509.
</dd>
96 <dt><code>libssh2
</code></dt>
97 <dd> Transport over the SSH protocol using
98 <a href=
"http://libssh2.org/" title=
"libssh2 homepage">libssh2
</a> instead
99 of the OpenSSH binary. This transport uses the libvirt authentication callback for
100 all ssh authentication calls and therefore supports keyboard-interactive authentication
101 even with graphical management applications. As with the classic ssh transport
102 netcat is required on the remote side.
</dd>
103 <dt><code>libssh
</code></dt>
104 <dd> Transport over the SSH protocol using
105 <a href=
"http://libssh.org/" title=
"libssh homepage">libssh
</a> instead
106 of the OpenSSH binary. This transport uses the libvirt authentication callback for
107 all ssh authentication calls and therefore supports keyboard-interactive authentication
108 even with graphical management applications. As with the classic ssh transport
109 netcat is required on the remote side.
</dd>
112 The default transport, if no other is specified, is
<code>tls
</code>.
115 <a id=
"Remote_URI_reference">Remote URIs
</a>
118 See also:
<a href=
"uri.html">documentation on ordinary (
"local") URIs
</a>.
121 Remote URIs have the general form (
"[...]" meaning an optional part):
123 <p><code>driver
</code>[
<code>+transport
</code>]
<code>://
</code>[
<code>username@
</code>][
<code>hostname
</code>][
<code>:port
</code>]
<code>/
</code>[
<code>path
</code>][
<code>?extraparameters
</code>]
126 Either the transport or the hostname must be given in order
127 to distinguish this from a local URI.
133 <li><code>xen+ssh://rjones@towada/system
</code><br/> — Connect to a
134 remote Xen hypervisor on host
<code>towada
</code> using ssh transport and ssh
135 username
<code>rjones
</code>.
137 <li><code>xen://towada/system
</code><br/> — Connect to a
138 remote Xen hypervisor on host
<code>towada
</code> using TLS.
140 <li><code>xen://towada/system?no_verify=
1</code><br/> — Connect to a
141 remote Xen hypervisor on host
<code>towada
</code> using TLS. Do not verify
142 the server's certificate.
144 <li><code>qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
</code><br/> —
145 Connect to the local qemu instances over a non-standard
146 Unix socket (the full path to the Unix socket is
147 supplied explicitly in this case).
149 <li><code>test+tcp://localhost:
5000/default
</code><br/> —
150 Connect to a libvirtd daemon offering unencrypted TCP/IP connections
151 on localhost port
5000 and use the test driver with default
154 <li><code>qemu+libssh2://user@host/system?known_hosts=/home/user/.ssh/known_hosts
</code><br/> —
155 Connect to a remote host using a ssh connection with the libssh2 driver
156 and use a different known_hosts file.
</li>
157 <li><code>qemu+libssh://user@host/system?known_hosts=/home/user/.ssh/known_hosts
</code><br/> —
158 Connect to a remote host using a ssh connection with the libssh driver
159 and use a different known_hosts file.
</li>
162 <a id=
"Remote_URI_parameters">Extra parameters
</a>
165 Extra parameters can be added to remote URIs as part
166 of the query string (the part following
<q><code>?
</code></q>).
167 Remote URIs understand the extra parameters shown below.
168 Any others are passed unmodified through to the back end.
169 Note that parameter values must be
170 <a href=
"http://xmlsoft.org/html/libxml-uri.html#xmlURIEscapeStr">URI-escaped
</a>.
172 <table class=
"top_table">
175 <th> Transports
</th>
186 The name passed to the remote virConnectOpen function. The
187 name is normally formed by removing transport, hostname, port
188 number, username and extra parameters from the remote URI, but in certain
189 very complex cases it may be better to supply the name explicitly.
194 <td> Example:
<code>name=qemu:///system
</code> </td>
198 <code>tls_priority
</code>
202 A vaid GNUTLS priority string
207 <td> Example:
<code>tls_priority=NORMAL:-VERS-SSL3.0
</code> </td>
213 <td> unix, ssh, libssh, libssh2
</td>
216 <dt><code>auto
</code></dt><dd>automatically determine the daemon
</dd>
217 <dt><code>direct
</code></dt><dd>connect to per-driver daemons
</dd>
218 <dt><code>legacy
</code></dt><dd>connect to libvirtd
</dd>
220 Can also be set in
<code>libvirt.conf
</code> as
<code>remote_mode
</code>
225 <td> Example:
<code>mode=direct
</code> </td>
233 The external command. For ext transport this is required.
234 For ssh the default is
<code>ssh
</code>.
235 The PATH is searched for the command.
240 <td> Example:
<code>command=/opt/openssh/bin/ssh
</code> </td>
246 <td> unix, ssh, libssh2, libssh
</td>
248 The path to the Unix domain socket, which overrides the
249 compiled-in default. For ssh transport, this is passed to
250 the remote netcat command (see next).
255 <td> Example:
<code>socket=/opt/libvirt/run/libvirt/libvirt-sock
</code> </td>
261 <td> ssh, libssh2, libssh
</td>
263 The name of the netcat command on the remote machine.
264 The default is
<code>nc
</code>. For ssh transport, libvirt
265 constructs an ssh command which looks like:
267 <pre><i>command
</i> -p
<i>port
</i> [-l
<i>username
</i>]
<i>hostname
</i> <i>netcat
</i> -U
<i>socket
</i>
270 where
<i>port
</i>,
<i>username
</i>,
<i>hostname
</i> can be
271 specified as part of the remote URI, and
<i>command
</i>,
<i>netcat
</i>
272 and
<i>socket
</i> come from extra parameters (or
279 <td> Example:
<code>netcat=/opt/netcat/bin/nc
</code> </td>
286 <td> ssh, libssh2, libssh
</td>
288 The name of the private key file to use to authentication to the remote
289 machine. If this option is not used the default keys are used.
294 <td> Example:
<code>keyfile=/root/.ssh/example_key
</code> </td>
299 <code>no_verify
</code>
303 SSH: If set to a non-zero value, this disables client's strict host key
304 checking making it auto-accept new host keys. Existing host keys will
308 TLS: If set to a non-zero value, this disables client checks of the
309 server's certificate. Note that to disable server checks of
310 the client's certificate or IP address you must
311 <a href=
"#Remote_libvirtd_configuration">change the libvirtd
317 <td> Example:
<code>no_verify=
1</code> </td>
325 If set to a non-zero value, this stops ssh from asking for
326 a password if it cannot log in to the remote machine automatically
327 (eg. using ssh-agent etc.). Use this when you don't have access
328 to a terminal - for example in graphical programs which use libvirt.
333 <td> Example:
<code>no_tty=
1</code> </td>
341 Specifies x509 certificates path for the client. If any of
342 the CA certificate, client certificate, or client key is
343 missing, the connection will fail with a fatal error.
348 <td> Example:
<code>pkipath=/tmp/pki/client
</code> </td>
352 <code>known_hosts
</code>
354 <td> libssh2, libssh
</td>
356 Path to the known_hosts file to verify the host key against. LibSSH2 and
357 libssh support OpenSSH-style known_hosts files, although LibSSH2 does not
358 support all key types, so using files created by the OpenSSH binary may
359 result into truncating the known_hosts file. Thus, with LibSSH2 it's
360 recommended to use the default known_hosts file is located in libvirt's
361 client local configuration directory e.g.: ~/.config/libvirt/known_hosts.
362 Note: Use absolute paths.
367 <td> Example:
<code>known_hosts=/root/.ssh/known_hosts
</code> </td>
373 <td> libssh2, libssh
</td>
375 A comma separated list of authentication methods to use. Default (is
376 "agent,privkey,password,keyboard-interactive". The order of the methods
377 is preserved. Some methods may require additional parameters.
382 <td> Example:
<code>sshauth=privkey,agent
</code> </td>
386 <a id=
"Remote_certificates">Generating TLS certificates
</a>
389 <a id=
"Remote_PKI">Public Key Infrastructure set up
</a>
392 If you are unsure how to create TLS certificates, skip to the
395 <table class=
"top_table">
399 <th> Description
</th>
400 <th> Required fields
</th>
404 <code>/etc/pki/CA/cacert.pem
</code>
406 <td> Installed on the client and server
</td>
407 <td> CA's certificate (
<a href=
"#Remote_TLS_CA">more info
</a>)
</td>
412 <code>$HOME/.pki/cacert.pem
</code>
414 <td> Installed on the client
</td>
415 <td> CA's certificate (
<a href=
"#Remote_TLS_CA">more info
</a>)
</td>
420 <code>/etc/pki/libvirt/private/serverkey.pem
</code>
422 <td> Installed on the server
</td>
423 <td> Server's private key (
<a href=
"#Remote_TLS_server_certificates">more info
</a>)
</td>
428 <code>/etc/pki/libvirt/servercert.pem
</code>
430 <td> Installed on the server
</td>
431 <td> Server's certificate signed by the CA.
432 (
<a href=
"#Remote_TLS_server_certificates">more info
</a>)
</td>
433 <td> CommonName (CN) must be the hostname of the server as it
434 is seen by clients. All hostname and IP address variants that might
435 be used to reach the server should be listed in Subject Alt Name
440 <code>/etc/pki/libvirt/private/clientkey.pem
</code>
442 <td> Installed on the client
</td>
443 <td> Client's private key. (
<a href=
"#Remote_TLS_client_certificates">more info
</a>)
</td>
448 <code>/etc/pki/libvirt/clientcert.pem
</code>
450 <td> Installed on the client
</td>
451 <td> Client's certificate signed by the CA
452 (
<a href=
"#Remote_TLS_client_certificates">more info
</a>)
</td>
453 <td> Distinguished Name (DN) can be checked against an access
454 control list (
<code>tls_allowed_dn_list
</code>).
459 <code>$HOME/.pki/libvirt/clientkey.pem
</code>
461 <td> Installed on the client
</td>
462 <td> Client's private key. (
<a href=
"#Remote_TLS_client_certificates">more info
</a>)
</td>
467 <code>$HOME/.pki/libvirt/clientcert.pem
</code>
469 <td> Installed on the client
</td>
470 <td> Client's certificate signed by the CA
471 (
<a href=
"#Remote_TLS_client_certificates">more info
</a>)
</td>
472 <td> Distinguished Name (DN) can be checked against an access
473 control list (
<code>tls_allowed_dn_list
</code>).
478 If 'pkipath' is specified in URI, then all the client
479 certificates must be found in the path specified, otherwise the
480 connection will fail with a fatal error. If 'pkipath' is not
484 <li> For a non-root user, libvirt tries to find the certificates
485 in $HOME/.pki/libvirt first. If the required CA certificate cannot
486 be found, then the global default location
487 (/etc/pki/CA/cacert.pem) will be used.
488 Likewise, if either the client certificate
489 or the client key cannot be found, then the global default
490 locations (/etc/pki/libvirt/clientcert.pem,
491 /etc/pki/libvirt/private/clientkey.pem) will be used.
493 <li> For the root user, the global default locations will always be used.
</li>
496 <a id=
"Remote_TLS_background">Background to TLS certificates
</a>
499 Libvirt supports TLS certificates for verifying the identity
500 of the server and clients. There are two distinct checks involved:
503 <li> The client should know that it is connecting to the right
504 server. Checking done by client by matching the certificate that
505 the server sends to the server's hostname. May be disabled by adding
506 <code>?no_verify=
1</code> to the
507 <a href=
"#Remote_URI_parameters">remote URI
</a>.
509 <li> The server should know that only permitted clients are
510 connecting. This can be done based on client's IP address, or on
511 client's IP address and client's certificate. Checking done by the
512 server. May be enabled and disabled in the
<a href=
"#Remote_libvirtd_configuration">libvirtd.conf file
</a>.
516 For full certificate checking you will need to have certificates
517 issued by a recognised
<a href=
"http://en.wikipedia.org/wiki/Certificate_authority">Certificate
518 Authority (CA)
</a> for your server(s) and all clients. To avoid the
519 expense of getting certificates from a commercial CA, you can set up
520 your own CA and tell your server(s) and clients to trust certificates
521 issues by your own CA. Follow the instructions in the next section.
524 Be aware that the
<a href=
"#Remote_libvirtd_configuration">default
525 configuration for libvirtd
</a> allows any client to connect provided
526 they have a valid certificate issued by the CA for their own IP
527 address. You may want to change this to make it less (or more)
528 permissive, depending on your needs.
531 <a id=
"Remote_TLS_CA">Setting up a Certificate Authority (CA)
</a>
534 You will need the
<a href=
"http://www.gnu.org/software/gnutls/manual/html_node/Invoking-certtool.html">GnuTLS
535 certtool program documented here
</a>. In Fedora, it is in the
536 <code>gnutls-utils
</code> package.
539 Create a private key for your CA:
542 certtool --generate-privkey
> cakey.pem
545 and self-sign it by creating a file with the
546 signature details called
547 <code>ca.info
</code> containing:
550 cn =
<i>Name of your organization
</i>
555 certtool --generate-self-signed --load-privkey cakey.pem \
556 --template ca.info --outfile cacert.pem
559 (You can delete
<code>ca.info
</code> file now if you
563 Now you have two files which matter:
566 <li><code>cakey.pem
</code> - Your CA's private key (keep this very secret!)
568 <li><code>cacert.pem
</code> - Your CA's certificate (this is public).
571 <p><code>cacert.pem
</code> has to be installed on clients and
572 server(s) to let them know that they can trust certificates issued by
576 The normal installation directory for
<code>cacert.pem
</code>
577 is
<code>/etc/pki/CA/cacert.pem
</code> on all clients and servers.
580 To see the contents of this file, do:
582 <pre><b>certtool -i --infile cacert.pem
</b>
584 X
.509 certificate info:
587 Serial Number (hex):
00
588 Subject: CN=Libvirt Project
589 Issuer: CN=Libvirt Project
590 Signature Algorithm: RSA-SHA
592 Not Before: Mon Jun
18 16:
22:
18 2007
593 Not After: Tue Jun
17 16:
22:
18 2008
597 This is all that is required to set up your CA. Keep the CA's private
598 key carefully as you will need it when you come to issue certificates
599 for your clients and servers.
602 <a id=
"Remote_TLS_server_certificates">Issuing server certificates
</a>
605 For each server (libvirtd) you need to issue a certificate
606 containing one or more hostnames and/or IP addresses.
607 Historically the CommonName (CN) field would contain the
608 hostname of the server and would match the hostname used
609 in the URI that clients pass to libvirt. In most TLS implementations
610 the CN field is considered legacy data. The preferential mechanism
611 is to use Subject Alt Name (SAN) extension fields to validate
612 against. In the future use of the CN field for validation may be
613 discontinued entirely, so it is strongly recommended to
614 include the SAN fields.
617 In the example below, clients will be connecting to the
618 server using a
<a href=
"#Remote_URI_reference">URI
</a> of
619 <code>qemu://compute1.libvirt.org/system
</code>, so the CN
620 must be
"<code>compute1.libvirt.org</code>".
623 Make a private key for the server:
626 certtool --generate-privkey
> serverkey.pem
629 and sign that key with the CA's private key by first
630 creating a template file called
<code>server.info
</code>.
631 The template file will contain a number of fields to define
632 the server as follows:
635 organization =
<i>Name of your organization
</i>
636 cn = compute1.libvirt.org
638 dns_name = compute1.libvirt.org
639 ip_address =
10.0.0.74
640 ip_address =
192.168.1.24
641 ip_address =
2001:cafe::
74
642 ip_address = fe20::
24
648 The 'cn' field should refer to the fully qualified public
649 hostname of the server. For the SAN extension data, there
650 must also be one or more 'dns_name' fields that contain all
651 possible hostnames that can be reasonably used by clients
652 to reach the server, both with and without domain name
653 qualifiers. If clients are likely to connect to the server
654 by IP address, then one or more 'ip_address' fields should
658 Use the template file as input to a
<code>certtool
</code>
659 command to sign the server certificate:
662 certtool --generate-certificate --load-privkey serverkey.pem \
663 --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \
664 --template server.info --outfile servercert.pem
667 This gives two files:
670 <li><code>serverkey.pem
</code> - The server's private key.
672 <li><code>servercert.pem
</code> - The server's public key.
676 We can examine this certificate and its signature:
678 <pre><b>certtool -i --infile servercert.pem
</b>
679 X
.509 certificate info:
682 Serial Number (hex):
00
683 Subject: O=Libvirt Project,CN=compute1.libvirt.org
684 Issuer: CN=Libvirt Project
685 Signature Algorithm: RSA-SHA
687 Not Before: Wed Oct
04 09:
09:
44 UTC
2017
688 Not After: Thu Oct
04 09:
09:
44 UTC
2018
690 Basic Constraints (critical):
691 Certificate Authority (CA): FALSE
692 Subject Alternative Name (not critical):
694 DNSname: compute1.libvirt.org
696 IPAddress:
192.168.1.24
697 IPAddress:
2001:cafe::
74
701 Note the
"Issuer" CN is
"Libvirt Project" (the CA) and
702 the
"Subject" CN is
"compute1.libvirt.org" (the server).
703 Notice that the hostname listed in the CN must also
704 be duplicated as a DNSname entry
707 Finally we have two files to install:
710 <li><code>serverkey.pem
</code> is
711 the server's private key which should be copied to the
712 server
<i>only
</i> as
713 <code>/etc/pki/libvirt/private/serverkey.pem
</code>.
715 <li><code>servercert.pem
</code> is the server's certificate
716 which can be installed on the server as
717 <code>/etc/pki/libvirt/servercert.pem
</code>.
721 <a id=
"Remote_TLS_client_certificates">Issuing client certificates
</a>
724 For each client (ie. any program linked with libvirt, such as
725 <a href=
"http://virt-manager.org/">virt-manager
</a>)
726 you need to issue a certificate with the X
.509 Distinguished Name (DN)
727 set to a suitable name. You can decide this on a company / organisation
731 C=GB,ST=London,L=London,O=Libvirt Project,CN=
<i>name_of_client
</i>
734 The process is the same as for
735 <a href=
"#Remote_TLS_server_certificates">setting up the
736 server certificate
</a> so here we just briefly cover the
743 certtool --generate-privkey
> clientkey.pem
747 Act as CA and sign the certificate. Create client.info containing:
752 organization = Libvirt Project
760 certtool --generate-certificate --load-privkey clientkey.pem \
761 --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \
762 --template client.info --outfile clientcert.pem
766 Install the certificates on the client machine:
768 cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem
769 cp clientcert.pem /etc/pki/libvirt/clientcert.pem
774 <a id=
"Remote_TLS_troubleshooting">Troubleshooting TLS certificate problems
</a>
777 <dt> failed to verify client's certificate
</dt>
780 On the server side, run the libvirtd server with
781 the '--listen' and '--verbose' options while the
782 client is connecting. The verbose log messages should
783 tell you enough to diagnose the problem.
787 <p> You can use the virt-pki-validate shell script
788 to analyze the setup on the client or server machines, preferably as root.
789 It will try to point out the possible problems and provide solutions to
790 fix the set up up to a point where you have secure remote access.
</p>
792 <a id=
"Remote_libvirtd_configuration">libvirtd configuration file
</a>
795 Libvirtd (the remote daemon) is configured from a file called
796 <code>/etc/libvirt/libvirtd.conf
</code>, or specified on
797 the command line using
<code>-f filename
</code> or
798 <code>--config filename
</code>.
801 This file should contain lines of the form below.
802 Blank lines and comments beginning with
<code>#
</code> are ignored.
804 <pre>setting = value
</pre>
805 <p>The following settings, values and default are:
</p>
806 <table class=
"top_table">
813 <td> listen_tls
<i>[
0|
1]
</i> </td>
816 Listen for secure TLS connections on the public TCP/IP port.
817 Note: it is also necessary to start the server in listening mode by
818 running it with --listen or editing /etc/sysconfig/libvirtd by uncommenting the
LIBVIRTD_ARGS=
"--listen" line
819 to cause the server to come up in listening mode whenever it is started.
823 <td> listen_tcp
<i>[
0|
1]
</i> </td>
826 Listen for unencrypted TCP connections on the public TCP/IP port.
827 Note: it is also necessary to start the server in listening mode.
831 <td> tls_port
<i>"service"</i> </td>
834 The port number or service name to listen on for secure TLS connections.
838 <td> tcp_port
<i>"service"</i> </td>
841 The port number or service name to listen on for unencrypted TCP connections.
845 <td> unix_sock_group
<i>"groupname"</i> </td>
848 The UNIX group to own the UNIX domain socket. If the socket permissions allow
849 group access, then applications running under matching group can access the
850 socket. Only valid if running as root
854 <td> unix_sock_ro_perms
<i>"octal-perms"</i> </td>
857 The permissions for the UNIX domain socket for read-only client connections.
858 The default allows any user to monitor domains.
862 <td> unix_sock_rw_perms
<i>"octal-perms"</i> </td>
865 The permissions for the UNIX domain socket for read-write client connections.
866 The default allows only root to manage domains.
870 <td> tls_no_verify_certificate
<i>[
0|
1]
</i> </td>
871 <td> 0 (certificates are verified)
</td>
873 If set to
1 then if a client certificate check fails, it is not an error.
877 <td> tls_no_verify_address
<i>[
0|
1]
</i> </td>
878 <td> 0 (addresses are verified)
</td>
880 If set to
1 then if a client IP address check fails, it is not an error.
884 <td> key_file
<i>"filename"</i> </td>
885 <td> "/etc/pki/libvirt/ private/serverkey.pem" </td>
887 Change the path used to find the server's private key.
888 If you set this to an empty string, then no private key is loaded.
892 <td> cert_file
<i>"filename"</i> </td>
893 <td> "/etc/pki/libvirt/ servercert.pem" </td>
895 Change the path used to find the server's certificate.
896 If you set this to an empty string, then no certificate is loaded.
900 <td> ca_file
<i>"filename"</i> </td>
901 <td> "/etc/pki/CA/cacert.pem" </td>
903 Change the path used to find the trusted CA certificate.
904 If you set this to an empty string, then no trusted CA certificate is loaded.
908 <td> crl_file
<i>"filename"</i> </td>
909 <td> (no CRL file is used)
</td>
911 Change the path used to find the CA certificate revocation list (CRL) file.
912 If you set this to an empty string, then no CRL is loaded.
916 <td> tls_allowed_dn_list [
"DN1",
"DN2"]
</td>
917 <td> (none - DNs are not checked)
</td>
920 Enable an access control list of client certificate Distinguished
921 Names (DNs) which can connect to the TLS port on this server.
924 The default is that DNs are not checked.
927 This list may contain wildcards such as
<code>"C=GB,ST=London,L=London,O=Libvirt Project,CN=*"</code>
928 See the POSIX
<code>fnmatch
</code> function for the format
932 Note that if this is an empty list,
<i>no client can connect
</i>.
935 Note also that GnuTLS returns DNs without spaces
936 after commas between the fields (and this is what we check against),
937 but the
<code>openssl x509
</code> tool shows spaces.
943 <a id=
"Remote_IPv6">IPv6 support
</a>
946 The libvirtd service and libvirt remote client driver both use the
947 <code>getaddrinfo()
</code> functions for name resolution and are
948 thus fully IPv6 enabled. ie, if a server has IPv6 address configured
949 the daemon will listen for incoming connections on both IPv4 and IPv6
950 protocols. If a client has an IPv6 address configured and the DNS
951 address resolved for a service is reachable over IPv6, then an IPv6
952 connection will be made, otherwise IPv4 will be used. In summary it
953 should just 'do the right thing(tm)'.
956 <a id=
"Remote_limitations">Limitations
</a>
959 <li> Fine-grained authentication: libvirt in general,
960 but in particular the remote case should support more
961 fine-grained authentication for operations, rather than
962 just read-write/read-only as at present.
966 Please come and discuss these issues and more on
<a href=
"https://www.redhat.com/mailman/listinfo/libvir-list" title=
"libvir-list mailing list">the mailing list
</a>.