##
##  SSL Global Context
##
##  All SSL configuration in this context applies both to
##  the main server and all SSL-enabled virtual hosts.
##

# These are the configuration directives to instruct the server how to
# serve pages over an https connection. For detailing information about these
# directives see <URL:https://httpd.apache.org/docs/2.4/mod/mod_ssl.html>
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.

# This global SSL configuration is ignored if 
# "SSL" is not defined, or if "NOSSL" is defined.
<IfDefine SSL>
<IfDefine !NOSSL>
<IfModule mod_ssl.c>

	#
	#   Some MIME-types for downloading Certificates and CRLs
	#
	AddType application/x-x509-ca-cert .crt
	AddType application/x-pkcs7-crl    .crl

	#   Pass Phrase Dialog:
	#   Configure the pass phrase gathering process.
	#   The filtering dialog program (`builtin' is a internal
	#   terminal dialog) has to provide the pass phrase on stdout.
	<IfDefine SYSTEMD>
	SSLPassPhraseDialog exec:/usr/sbin/apache2-systemd-ask-pass
	</IfDefine>
	<IfDefine !SYSTEMD>
	SSLPassPhraseDialog  builtin
	</IfDefine>

	#   Inter-Process Session Cache:
	#   Configure the SSL Session Cache: First the mechanism 
	#   to use and second the expiring timeout (in seconds).
	#   Note that on most platforms shared memory segments are not allowed to be on 
	#   network-mounted drives, so in that case you need to use the dbm method.
	#SSLSessionCache        none
	#<IfModule mod_socache_dbm.c>
	#SSLSessionCache         dbm:/var/lib/apache2/ssl_scache
	#</IfModule>

	<IfModule mod_socache_shmcb.c>
	SSLSessionCache         shmcb:/var/lib/apache2/ssl_scache(512000)
	</IfModule>

	SSLSessionCacheTimeout  300

	#   Configures the cache used to store OCSP responses which get included in
	#   the TLS handshake if SSLUseStapling is enabled. Configuration of a cache
	#   is mandatory for OCSP stapling. With the exception of none and nonenotnull,
	#   the same storage types are supported as with SSLSessionCache.
	#<IfModule mod_socache_dbm.c>
	#SSLStaplingCache       dbm:/var/lib/apache2/ssl_stapling
	#</IfModule>

	<IfModule mod_socache_shmcb.c>
	SSLStaplingCache        shmcb:/var/lib/apache2/ssl_stapling(64000)
	</IfModule>

	SSLStaplingStandardCacheTimeout         86400
	SSLStaplingErrorCacheTimeout            300
	SSLStaplingReturnResponderErrors        Off

	#   Pseudo Random Number Generator (PRNG):
	#   Configure one or more sources to seed the PRNG of the 
	#   SSL library. The seed data should be of good random quality.
	#   WARNING! On some platforms /dev/random blocks if not enough entropy
	#   is available. This means you then cannot use the /dev/random device
	#   because it would lead to very long connection times (as long as
	#   it requires to make more entropy available). But usually those
	#   platforms additionally provide a /dev/urandom device which doesn't
	#   block. So, if available, use this one instead. Read the mod_ssl User
	#   Manual for more details.
	SSLRandomSeed startup builtin
	SSLRandomSeed connect builtin
	#SSLRandomSeed startup file:/dev/random  512
	#SSLRandomSeed connect file:/dev/random  512
	#SSLRandomSeed startup file:/dev/urandom 512
	#SSLRandomSeed connect file:/dev/urandom 512

	#   SSL protocols
	#   Allow TLS version 1.2 or higher, which is a recommended default
    #   these days by international information security standards.
	SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

	#   SSL Cipher Suite:
	#   List the ciphers that the client is permitted to negotiate.
	#   See the mod_ssl documentation for a complete list.
	#   The magic string "DEFAULT_SUSE" expands to an openssl defined
	#   secure list of default ciphers (openssl ciphers -v DEFAULT_SUSE).
	SSLCipherSuite PROFILE=SYSTEM

	#   SSL Cipher Suite for Proxy Connections:
	#   Equivalent to SSLCipherSuite, but for the proxy connection. Please
        #   refer to SSLCipherSuite for additional information.
	SSLProxyCipherSuite PROFILE=SYSTEM

	#   SSLHonorCipherOrder
	#   If SSLHonorCipherOrder is disabled, then the client's preferences
	#   for chosing the cipher during the TLS handshake are used.
	#   If set to on, then the above SSLCipherSuite is used, in the order
	#   given, with the first supported match on both ends.
	SSLHonorCipherOrder on

	#   Server Certificate:
	#   Point SSLCertificateFile at a PEM encoded certificate.  If
	#   the certificate is encrypted, then you will be prompted for a
	#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
	#   in mind that if you have both an RSA and a DSA certificate you
	#   can configure both in parallel (to also allow the use of DSA
	#   ciphers, etc.)
	#SSLCertificateFile /etc/apache2/ssl.crt/server.crt
	#SSLCertificateFile /etc/apache2/ssl.crt/server-dsa.crt

	#   Server Private Key:
	#   If the key is not combined with the certificate, use this
	#   directive to point at the key file.  Keep in mind that if
	#   you've both a RSA and a DSA private key you can configure
	#   both in parallel (to also allow the use of DSA ciphers, etc.)
	#SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
	#SSLCertificateKeyFile /etc/apache2/ssl.key/server-dsa.key

	#   Server Certificate Chain:
	#   Point SSLCertificateChainFile at a file containing the
	#   concatenation of PEM encoded intermediate CA
	#   certificates which form the certificate chain for the
	#   server certificate. Alternatively the referenced file
	#   can be the same as SSLCertificateFile when the CA
	#   certificates are directly appended to the server
	#   certificate for convinience.
	#SSLCertificateChainFile /etc/apache2/ssl.crt/chain.crt

	#   Certificate Authority (CA):
	#   Set the CA certificate verification path where to find CA
	#   certificates for client authentication or alternatively one
	#   huge file containing all of them (file must be PEM encoded)
	#   Note: Inside SSLCACertificatePath you need hash symlinks
	#         to point to the certificate files. Use the provided
	#         Makefile to update the hash symlinks after changes.
	#SSLCACertificatePath /etc/apache2/ssl.crt
	#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt

	#   Certificate Revocation Lists (CRL):
	#   Set the CA revocation path where to find CA CRLs for client
	#   authentication or alternatively one huge file containing all
	#   of them (file must be PEM encoded)
	#   Note: Inside SSLCARevocationPath you need hash symlinks
	#         to point to the certificate files. Use the provided
	#         Makefile to update the hash symlinks after changes.
	#SSLCARevocationPath /etc/apache2/ssl.crl
	#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl

</IfModule>
</IfDefine>
</IfDefine>
