Introduction to GnuTLS
        
        
          The GnuTLS package contains
          libraries and userspace tools which provide a secure layer over a
          reliable transport layer. Currently the GnuTLS library implements the proposed
          standards by the IETF's TLS working group. Quoting from the
          TLS 1.3 protocol
          specification :
        
        
          “ TLS allows client/server
          applications to communicate over the Internet in a way that is
          designed to prevent eavesdropping, tampering, and message
          forgery. ”
        
        
          GnuTLS provides support for TLS
          1.3, TLS 1.2, TLS 1.1, TLS 1.0, and (optionally) SSL 3.0 protocols.
          It also supports TLS extensions, including server name and max
          record size. Additionally, the library supports authentication
          using the SRP protocol, X.509 certificates, and OpenPGP keys, along
          with support for the TLS Pre-Shared-Keys (PSK) extension, the Inner
          Application (TLS/IA) extension, and X.509 and OpenPGP certificate
          handling.
        
        
          ![[Note]](../images/note.png) 
          
            Note
          
          
            Development versions of BLFS may not build or run some packages
            properly if LFS or dependencies have been updated since the most
            recent stable versions of the books.
          
         
        
          Package Information
        
        
        
          GnuTLS Dependencies
        
        
          Required
        
        
          Nettle-3.10.2
        
        
          Recommended
        
        
          make-ca-1.16.1, libunistring-1.4.1, libtasn1-4.20.0, and p11-kit-0.25.10
        
        
          Optional
        
        
          Brotli-1.2.0, Doxygen-1.15.0, GTK-Doc-1.35.1, libidn-1.43 or
          libidn2-2.3.8, libseccomp-2.6.0, Net-tools-2.10 (used during the test suite),
          texlive-20250308 or install-tl-unx, Unbound-1.24.1
          (to build the DANE library), Valgrind-3.26.0 (used during the test suite),
          autogen, cmocka and datefudge
          (used during the test suite if the DANE library is built),
          leancrypto, and
          Trousers (Trusted
          Platform Module support)
        
        
          ![[Note]](../images/note.png) 
          
            Note
          
          
            Note that if you do not install libtasn1-4.20.0, a version shipped in the
            GnuTLS tarball will be used
            instead.
          
         
       
      
        
          Installation of GnuTLS
        
        
          Install GnuTLS by running the
          following commands:
        
        ./configure --prefix=/usr \
            --docdir=/usr/share/doc/gnutls-3.8.10 \
            --with-default-trust-store-pkcs11="pkcs11:" &&
make
        
          To test the results, now issue: make
          check.
        
        
          Now, install the package as the root user:
        
        make install
       
      
        
          Command Explanations
        
        
          --with-default-trust-store-pkcs11="pkcs11:":
          This switch tells gnutls to use the PKCS #11 trust store as the
          default trust. Omit this switch if p11-kit-0.25.10 is not
          installed.
        
        
          --with-default-trust-store-file=/etc/pki/tls/certs/ca-bundle.crt:
          This switch tells configure where to find the
          legacy CA certificate bundle and to use it instead of PKCS #11
          module by default. Use this if p11-kit-0.25.10 is not installed.
        
        
          --enable-gtk-doc: Use this parameter if
          GTK-Doc is installed and you wish
          to rebuild and install the API documentation.
        
        
          --enable-openssl-compatibility: Use
          this switch if you wish to build the OpenSSL compatibility library.
        
        
          --without-p11-kit: Use this switch if
          you have not installed p11-kit-0.25.10.
        
        
          --with-included-unistring: This switch
          uses the bundled version of libunistring, instead of the system
          one. Use this switch if you have not installed libunistring-1.4.1.
        
        
          --disable-dsa: This switch completely
          disables DSA algorithm support.