1. 19 10月, 2018 1 次提交
  2. 03 7月, 2018 1 次提交
    • R
      crypto: Implement TLS Pre-Shared Keys (PSK). · e1a6dc91
      Richard W.M. Jones 提交于
      Pre-Shared Keys (PSK) is a simpler mechanism for enabling TLS
      connections than using certificates.  It requires only a simple secret
      key:
      
        $ mkdir -m 0700 /tmp/keys
        $ psktool -u rjones -p /tmp/keys/keys.psk
        $ cat /tmp/keys/keys.psk
        rjones:d543770c15ad93d76443fb56f501a31969235f47e999720ae8d2336f6a13fcbc
      
      The key can be secretly shared between clients and servers.  Clients
      must specify the directory containing the "keys.psk" file and a
      username (defaults to "qemu").  Servers must specify only the
      directory.
      
      Example NBD client:
      
        $ qemu-img info \
          --object tls-creds-psk,id=tls0,dir=/tmp/keys,username=rjones,endpoint=client \
          --image-opts \
          file.driver=nbd,file.host=localhost,file.port=10809,file.tls-creds=tls0,file.export=/
      
      Example NBD server using qemu-nbd:
      
        $ qemu-nbd -t -x / \
          --object tls-creds-psk,id=tls0,endpoint=server,dir=/tmp/keys \
          --tls-creds tls0 \
          image.qcow2
      
      Example NBD server using nbdkit:
      
        $ nbdkit -n -e / -fv \
          --tls=on --tls-psk=/tmp/keys/keys.psk \
          file file=disk.img
      Signed-off-by: NRichard W.M. Jones <rjones@redhat.com>
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      e1a6dc91
  3. 19 9月, 2016 1 次提交
  4. 04 7月, 2016 2 次提交
    • D
      crypto: allow default TLS priority to be chosen at build time · a1c5e949
      Daniel P. Berrange 提交于
      Modern gnutls can use a global config file to control the
      crypto priority settings for TLS connections. For example
      the priority string "@SYSTEM" instructs gnutls to find the
      priority setting named "SYSTEM" in the global config file.
      
      Latest gnutls GIT codebase gained the ability to reference
      multiple priority strings in the config file, with the first
      one that is found to existing winning. This means it is now
      possible to configure QEMU out of the box with a default
      priority of "@QEMU,SYSTEM", which says to look for the
      settings "QEMU" first, and if not found, use the "SYSTEM"
      settings.
      
      To make use of this facility, we introduce the ability to
      set the QEMU default priority at build time via a new
      configure argument.  It is anticipated that distro vendors
      will set this when building QEMU to a suitable value for
      use with distro crypto policy setup. eg current Fedora
      would run
      
       ./configure --tls-priority=@SYSTEM
      
      while future Fedora would run
      
       ./configure --tls-priority=@QEMU,SYSTEM
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      a1c5e949
    • D
      crypto: add support for TLS priority string override · 13f12430
      Daniel P. Berrange 提交于
      The gnutls default priority is either "NORMAL" (most historical
      versions of gnutls) which is a built-in label in gnutls code,
      or "@SYSTEM" (latest gnutls on Fedora at least) which refers
      to an admin customizable entry in a gnutls config file.
      
      Regardless of which default is used by a distro, they are both
      global defaults applying to all applications using gnutls. If
      a single application on the system needs to use a weaker set
      of crypto priorities, this potentially forces the weakness onto
      all applications. Or conversely if a single application wants a
      strong default than all others, it can't do this via the global
      config file.
      
      This adds an extra parameter to the tls credential object which
      allows the mgmt app / user to explicitly provide a priority
      string to QEMU when configuring TLS.
      
      For example, to use the "NORMAL" priority, but disable SSL 3.0
      one can now configure QEMU thus:
      
        $QEMU -object tls-creds-x509,id=tls0,dir=/home/berrange/qemutls,\
                      priority="NORMAL:-VERS-SSL3.0" \
              ..other args...
      
      If creating tls-creds-anon, whatever priority the user specifies
      will always have "+ANON-DH" appended to it, since that's mandatory
      to make the anonymous credentials work.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      13f12430
  5. 23 3月, 2016 1 次提交
    • M
      include/qemu/osdep.h: Don't include qapi/error.h · da34e65c
      Markus Armbruster 提交于
      Commit 57cb38b3 included qapi/error.h into qemu/osdep.h to get the
      Error typedef.  Since then, we've moved to include qemu/osdep.h
      everywhere.  Its file comment explains: "To avoid getting into
      possible circular include dependencies, this file should not include
      any other QEMU headers, with the exceptions of config-host.h,
      compiler.h, os-posix.h and os-win32.h, all of which are doing a
      similar job to this file and are under similar constraints."
      qapi/error.h doesn't do a similar job, and it doesn't adhere to
      similar constraints: it includes qapi-types.h.  That's in excess of
      100KiB of crap most .c files don't actually need.
      
      Add the typedef to qemu/typedefs.h, and include that instead of
      qapi/error.h.  Include qapi/error.h in .c files that need it and don't
      get it now.  Include qapi-types.h in qom/object.h for uint16List.
      
      Update scripts/clean-includes accordingly.  Update it further to match
      reality: replace config.h by config-target.h, add sysemu/os-posix.h,
      sysemu/os-win32.h.  Update the list of includes in the qemu/osdep.h
      comment quoted above similarly.
      
      This reduces the number of objects depending on qapi/error.h from "all
      of them" to less than a third.  Unfortunately, the number depending on
      qapi-types.h shrinks only a little.  More work is needed for that one.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      [Fix compilation without the spice devel packages. - Paolo]
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      da34e65c
  6. 29 1月, 2016 1 次提交
  7. 18 11月, 2015 1 次提交
  8. 15 9月, 2015 1 次提交
    • D
      crypto: introduce new module for handling TLS sessions · d321e1e5
      Daniel P. Berrange 提交于
      Introduce a QCryptoTLSSession object that will encapsulate
      all the code for setting up and using a client/sever TLS
      session. This isolates the code which depends on the gnutls
      library, avoiding #ifdefs in the rest of the codebase, as
      well as facilitating any possible future port to other TLS
      libraries, if desired. It makes use of the previously
      defined QCryptoTLSCreds object to access credentials to
      use with the session. It also includes further unit tests
      to validate the correctness of the TLS session handshake
      and certificate validation. This is functionally equivalent
      to the current TLS session handling code embedded in the
      VNC server, and will obsolete it.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      d321e1e5