                -------------------------
                strongSwan - Installation
                -------------------------


Contents
--------

    1.   Overview
    2.   Required packages
    3.   Optional packages
    3.1   HTTP fetcher
    3.2   LDAP
    3.3   Other pluggable modules
    4.   Kernel configuration

1.  Overview
    --------

    Since version 4.x strongSwan uses the GNU build system (Autotools).
    This simplifies the build process and package maintenance. First, check for
    the availability of required packages on your system (section 2.). You may
    want to include support for additional features, which require other
    packages to be installed (section 3.).

    To compile an extracted tarball, run the ./configure script first:

      ./configure

    You may want to specify some arguments listed in section 3., or see the
    available options of the script using "./configure --help".

    After a successful run of the script, run

      make

    followed by

      make install

    in the usual manner.

    To check if your kernel fulfills the requirements, see section 4.

    Refer to README for configuration examples.


2.  Required packages
    -----------------

    In order to be able to build strongSwan you'll need one of the following
    cryptographic libraries:

      * The OpenSSL Cryptographic Library (libcrypto)
        https://www.openssl.org
      * The wolfSSL Embedded TLS Library (libwolfssl)
        https://www.wolfssl.com
      * The Botan Crypto Library (libbotan)
        https://botan.randombit.net
      * The GNU Multiprecision Arithmetic Library (GMP, libgmp)
        https://gmplib.org
      * The GNU Cryptographic Library (libgcrypt)
        https://www.gnupg.org

    If no other options are specified during ./configure libgmp will be used.

    The libraries and the corresponding header files are usually included in
    the form of one or two packages in the major Linux distributions (for GMP on
    Debian: libgmp3 and libgmp3-dev).


3.  Optional packages
    -----------------

3.1 HTTP Fetcher
    ------------

    If you intend to dynamically fetch Certificate Revocation Lists (CRLs)
    from an HTTP server or as an alternative want to use the Online
    Certificate Status Protocol (OCSP) then you will need the either of the
    following libraries:

      * The cURL library (libcurl)
        https://curl.se/libcurl/
      * The LibSoup library (libsoup)
        https://live.gnome.org/LibSoup

    In order to activate the use of either of these libraries in strongSwan you
    must enable the appropriate ./configure switch.


3.2 LDAP
    ----

    If you intend to dynamically fetch Certificate Revocation Lists (CRLs)
    from an LDAP server then you will need the libldap library available
    from https://www.openldap.org/.

    OpenLDAP is usually included  with your Linux distribution. You will need
    both the run-time and development environments (SuSE: openldap2,
    openldap2-devel).

    In order to activate the use of the libldap library in strongSwan you must
    enable the ./configure switch:

      ./configure [...] --enable-ldap

    LDAP Protocol version 2 is not supported anymore, --enable-ldap uses always
    version 3 of the LDAP protocol


3.3 Other pluggable modules
    -----------------------

    There are many other optional plugins that, for instance, provide support
    for PKCS#11 or SQL databases.
    For a more detailed description of these refer to our documentation:

      * https://docs.strongswan.org


4.  Kernel configuration
    --------------------

    Please make sure that the following IPsec-related Linux kernel modules are
    available:

      * esp4
      * esp6
      * xfrm_user

    And for older kernels, mode-specific modules such as:

      * xfrm4_tunnel
      * xfrm4_mode_tunnel

    These may be built into the kernel or as modules. Modules should get loaded
    automatically if necessary.

    The built-in kernel Cryptoapi modules with selected encryption and
    hash algorithms should also be available.

    Support for multiple routing tables is also recommended.

    For a more up-to-date list of recommended modules refer to:

      * https://docs.strongswan.org/docs/5.9/install/kernelModules.html
