source: mod_gnutls/docs/mod_gnutls_manual.mdwn @ d8ae2a0

debian/masterdebian/stretch-backportsjessie-backportsupstream
Last change on this file since d8ae2a0 was d8ae2a0, checked in by Thomas Klute <thomas2.klute@…>, 5 years ago

Documentation for proxy TLS configuration directives

Add documentation for the new configuration directives introduced in
commit 0de1839d444092a3d46ebae49572c54b1982f629, and add the generated
documentation files to .gitignore.

  • Property mode set to 100644
File size: 22.8 KB
RevLine 
[e7527b9]1% `mod_gnutls` Manual
[4ee45a1]2
3* * * * *
4
[bce7907]5`mod_gnutls` is a module for the Apache web server that provides HTTPS
6(HTTP over Transport Layer Security (TLS) or the older Secure Sockets
7Layer (SSL)) using the GnuTLS library.  More information about the
8module can be found at [the project's website](https://mod.gnutls.org/).
[4ee45a1]9
10* * * * *
11
12Compilation & Installation
[2b16350]13==========================
[4ee45a1]14
[e7527b9]15`mod_gnutls` uses the `./configure && make && make install` mechanism
16common to many Open Source programs.  Most of the dirty work is
17handled by either `./configure` or Apache's `apxs` utility. If you have
18built Apache modules before, there shouldn't be any surprises for you.
19
20The interesting options you can pass to configure are:
21
22`--with-apxs=PATH`
23:   This option is used to specify the location of the apxs utility that
24    was installed as part of apache. Specify the location of the
25    binary, not the directory it is located in.
26
27`--with-libgnutls=PATH`
28:   Full path to the libgnutls-config program.
29
30`--with-apr-memcache=PREFIX`
31:   Prefix to where apr\_memcache is installed.
32
33`--help`
34:   Provides a list of all available configure options.
[4ee45a1]35
36* * * * *
37
38Integration
[2b16350]39===========
[4ee45a1]40
[2b16350]41To activate `mod_gnutls` just add the following line to your httpd.conf
[4ee45a1]42and restart Apache:
43
[2b16350]44    LoadModule gnutls_module modules/mod_gnutls.so
[4ee45a1]45
46* * * * *
47
[2b16350]48Configuration Directives
49========================
[4ee45a1]50
[2b16350]51`GnuTLSEnable`
52--------------
[4ee45a1]53
[2b16350]54Enable GnuTLS for this virtual host
[4ee45a1]55
[2b16350]56    GnuTLSEnable [on|off]
[4ee45a1]57
[2b16350]58Default: *off*\
59Context: virtual host
[4ee45a1]60
[2b16350]61This directive enables SSL/TLS Encryption for a Virtual Host.
[4ee45a1]62
[2b16350]63`GnuTLSCache`
64-------------
[4ee45a1]65
[2b16350]66Configure SSL Session Cache
[4ee45a1]67
[2b16350]68    GnuTLSCache [dbm|gdbm|memcache|none] [PATH|SERVERLIST|-]
[4ee45a1]69
[2b16350]70Default: `GnuTLSCache none`\
71Context: server config
[4ee45a1]72
[2b16350]73This directive configures the SSL Session Cache for `mod_gnutls`.
74This could be shared between machines of different architectures.
[4ee45a1]75
[2b16350]76`dbm` (Requires Berkeley DBM)
77:   Uses the default Berkeley DB backend of APR DBM to cache SSL
78    Sessions results.  The argument is a relative or absolute path to
79    be used as the DBM Cache file. This is compatible with most
80    operating systems, but needs the Apache Runtime to be compiled
81    with Berkeley DBM support.
[4ee45a1]82
[2b16350]83`gdbm`
84:   Uses the GDBM backend of APR DBM to cache SSL Sessions results.
[4ee45a1]85
[2b16350]86    The argument is a relative or absolute path to be used as the DBM Cache
87    file.  This is the recommended option.
[4ee45a1]88
[2b16350]89`memcache`
90:   Uses a memcached server to cache the SSL Session.
[4ee45a1]91
[2b16350]92    The argument is a space separated list of servers. If no port
93    number is supplied, the default of 11211 is used.  This can be
94    used to share a session cache between all servers in a cluster.
[4ee45a1]95
[2b16350]96`none`
97:   Turns off all caching of SSL Sessions.
[4ee45a1]98
[2b16350]99    This can significantly reduce the performance of `mod_gnutls` since
100    even followup connections by a client must renegotiate parameters
101    instead of reusing old ones.  This is the default, since it
102    requires no configuration.
[4ee45a1]103
[2b16350]104`GnuTLSCacheTimeout`
105--------------------
[4ee45a1]106
[2b16350]107Timeout for SSL Session Cache expiration
[4ee45a1]108
[2b16350]109    GnuTLSCacheTimeout SECONDS
[4ee45a1]110
[2b16350]111Default: `GnuTLSCacheTimeout 300`\
112Context: server config
[4ee45a1]113
[2b16350]114Sets the timeout for SSL Session Cache entries expiration.  This
115directive is valid even if Session Tickets are used, and indicates the
116expiration time of the ticket in seconds.
[4ee45a1]117
[2b16350]118`GnuTLSSessionTickets`
119----------------------
[4ee45a1]120
[2b16350]121Enable Session Tickets for the server
[4ee45a1]122
[2b16350]123    GnuTLSSessionTickets [on|off]
[4ee45a1]124
[2b16350]125Default: `off`\
126Context: server config, virtual host
[4ee45a1]127
128To avoid storing data for TLS session resumption it is allowed to
[2b16350]129provide client with a ticket, to use on return.  Use for servers with
130limited storage, and don't combine with GnuTLSCache. For a pool of
131servers this option is not recommended since the tickets are unique
132for the issuing server only.
[4ee45a1]133
134
[2b16350]135`GnuTLSCertificateFile`
136-----------------------
[4ee45a1]137
[2b16350]138Set to the PEM Encoded Server Certificate
[4ee45a1]139
[2b16350]140    GnuTLSCertificateFile FILEPATH
[4ee45a1]141
[2b16350]142Default: *none*\
143Context: server config, virtual host
[4ee45a1]144
145Takes an absolute or relative path to a PEM-encoded X.509 certificate to
146use as this Server's End Entity (EE) certificate. If you need to supply
147certificates for intermediate Certificate Authorities (iCAs), they
148should be listed in sequence in the file, from EE to the iCA closest to
149the root CA. Optionally, you can also include the root CA's certificate
150as the last certificate in the list.
151
[2b16350]152`GnuTLSKeyFile`
153---------------
[4ee45a1]154
[eebc960]155Set to the PEM Encoded Server Private Key
[4ee45a1]156
[eebc960]157    GnuTLSKeyFile FILEPATH
[4ee45a1]158
[2b16350]159Default: *none*\
160Context: server config, virtual host
[4ee45a1]161
[eebc960]162Takes an absolute or relative path to the Server Private Key. This key
163cannot currently be password protected.
[4ee45a1]164
165**Security Warning:**\
166 This private key must be protected. It is read while Apache is still
167running as root, and does not need to be readable by the nobody or
168apache user.
169
[2b16350]170`GnuTLSPGPCertificateFile`
171--------------------------
[4ee45a1]172
[2b16350]173Set to a base64 Encoded Server OpenPGP Certificate
[4ee45a1]174
[2b16350]175    GnuTLSPGPCertificateFile FILEPATH
[4ee45a1]176
[2b16350]177Default: *none*\
178Context: server config, virtual host
[4ee45a1]179
180Takes an absolute or relative path to a base64 Encoded OpenPGP
181Certificate to use as this Server's Certificate.
182
[2b16350]183`GnuTLSPGPKeyFile`
184------------------
[4ee45a1]185
[2b16350]186Set to the Server OpenPGP Secret Key
[4ee45a1]187
[2b16350]188    GnuTLSPGPKeyFile FILEPATH
[4ee45a1]189
[2b16350]190Default: *none*\
191Context: server config, virtual host
[4ee45a1]192
193Takes an absolute or relative path to the Server Private Key. This key
194cannot currently be password protected.
195
196**Security Warning:**\
197 This private key must be protected. It is read while Apache is still
198running as root, and does not need to be readable by the nobody or
199apache user.
200
[2b16350]201`GnuTLSClientVerify`
202--------------------
[4ee45a1]203
204Enable Client Certificate Verification\
205
[2b16350]206    GnuTLSClientVerify [ignore|request|require]
[4ee45a1]207
[2b16350]208Default: `ignore`\
209Context: server config, virtual host, directory, .htaccess
[4ee45a1]210
211This directive controls the use of SSL Client Certificate
[2b16350]212Authentication. If used in the .htaccess context, it can force TLS
213re-negotiation.
[4ee45a1]214
[2b16350]215`ignore`
216:   `mod_gnutls` will ignore the contents of any SSL Client Certificates
217    sent. It will not request that the client sends a certificate.
[4ee45a1]218
[2b16350]219`request`
220:   The client certificate will be requested, but not required.
221    The Certificate will be validated if sent.  The output of the
222    validation status will be stored in the `SSL_CLIENT_VERIFY`
223    environment variable and can be `SUCCESS`, `FAILED` or `NONE`.
[4ee45a1]224
[2b16350]225`require`
226:   A Client certificate will be required. Any requests without a valid
227    client certificate will be denied.  The `SSL_CLIENT_VERIFY`
228    environment variable will only be set to `SUCCESS`.
[4ee45a1]229
[2b16350]230`GnuTLSClientCAFile`
231--------------------
[4ee45a1]232
[2b16350]233Set to the PEM Encoded Certificate Authority Certificate
[4ee45a1]234
[2b16350]235    GnuTLSClientCAFile FILEPATH
[4ee45a1]236
[2b16350]237Default: *none*
238Context: server config, virtual host
[4ee45a1]239
240Takes an absolute or relative path to a PEM Encoded Certificate to use
[2b16350]241as a Certificate Authority with Client Certificate Authentication.
242This file may contain a list of trusted authorities.
[4ee45a1]243
[2b16350]244`GnuTLSPGPKeyringFile`
245----------------------
[4ee45a1]246
[2b16350]247Set to a base64 Encoded key ring
[4ee45a1]248
[2b16350]249    GnuTLSPGPKeyringFile FILEPATH
[4ee45a1]250
[2b16350]251Default: *none*\
252Context: server config, virtual host
[4ee45a1]253
[2b16350]254Takes an absolute or relative path to a base64 Encoded Certificate
255list (key ring) to use as a means of verification of Client
256Certificates.  This file should contain a list of trusted signers.
[4ee45a1]257
[2b16350]258`GnuTLSDHFile`
259--------------
[4ee45a1]260
[2b16350]261Set to the PKCS \#3 encoded Diffie Hellman parameters
[4ee45a1]262
[2b16350]263    GnuTLSDHFile FILEPATH
[4ee45a1]264
[2b16350]265Default: *none*\
266Context: server config, virtual host
[4ee45a1]267
[2b16350]268Takes an absolute or relative path to a PKCS \#3 encoded DH
269parameters.Those are used when the DHE key exchange method is enabled.
270You can generate this file using `certtool --generate-dh-params --bits
2712048`.  If not set `mod_gnutls` will use the included parameters.
[4ee45a1]272
[2b16350]273`GnuTLSSRPPasswdFile`
274---------------------
[4ee45a1]275
[2b16350]276Set to the SRP password file for SRP ciphersuites
[4ee45a1]277
[2b16350]278    GnuTLSSRPPasswdFile FILEPATH
[4ee45a1]279
[2b16350]280Default: *none*\
281Context: server config, virtual host
[4ee45a1]282
[2b16350]283Takes an absolute or relative path to an SRP password file. This is
284the same format as used in libsrp.  You can generate such file using
285the command `srptool --passwd /etc/tpasswd --passwd-conf
286/etc/tpasswd.conf -u test` to set a password for user test.  This
287password file holds the username, a password verifier and the
288dependency to the SRP parameters.
[4ee45a1]289
[2b16350]290`GnuTLSSRPPasswdConfFile`
291-------------------------
[4ee45a1]292
[2b16350]293Set to the SRP password.conf file for SRP ciphersuites
[4ee45a1]294
[2b16350]295    GnuTLSSRPPasswdConfFile FILEPATH
[4ee45a1]296
[2b16350]297Default: *none*\
298Context: server config, virtual host
[4ee45a1]299
[2b16350]300Takes an absolute or relative path to an SRP password.conf file. This
301is the same format as used in `libsrp`.  You can generate such file
302using the command `srptool --create-conf /etc/tpasswd.conf`.  This
303file holds the SRP parameters and is associate with the password file
304(the verifiers depends on these parameters).
[4ee45a1]305
[2b16350]306`GnuTLSPriorities`
307------------------
[4ee45a1]308
[2b16350]309Set the allowed ciphers, key exchange algorithms, MACs and compression
310methods
[4ee45a1]311
[5409165]312    GnuTLSPriorities NORMAL:+CIPHER_0:+CIPHER_1:...:+CIPHER_N
[4ee45a1]313
[2b16350]314Default: *none*\
315Context: server config, virtual host
[4ee45a1]316
[2b16350]317Takes a semi-colon separated list of ciphers, key exchange methods
318Message authentication codes and compression methods to enable.
319The allowed keywords are specified in the `gnutls_priority_init()`
320function of GnuTLS.
[4ee45a1]321
[5409165]322Full details can be found at [the GnuTLS documentation](http://gnutls.org/manual/html_node/Priority-Strings.html#Priority-Strings).
[2b16350]323In brief you can specify a set of ciphersuites from the choices:
[4ee45a1]324
[2b16350]325`NONE`
326:   The empty list.
[4ee45a1]327
[2b16350]328`EXPORT`
329:   A list with all the supported cipher combinations
330    including the `EXPORT` strength algorithms.
[4ee45a1]331
[2b16350]332`PERFORMANCE`
333:   A list with all the secure cipher combinations sorted in terms of performance.
[4ee45a1]334
[2b16350]335`NORMAL`
336:   A list with all the secure cipher combinations sorted
337    with respect to security margin (subjective term).
[4ee45a1]338
[2b16350]339`SECURE`
340:   A list with all the secure cipher combinations including
341    the 256-bit ciphers sorted with respect to security margin.
[4ee45a1]342
[2b16350]343Additionally you can add or remove algorithms using the `+` and `!`
344prefixes respectively.
[4ee45a1]345
[2b16350]346For example, in order to disable the `ARCFOUR` cipher from the `NORMAL` set
347you can use the string `NORMAL:!ARCFOUR-128`
[4ee45a1]348
[2b16350]349Other options such as the protocol version and the compression method
350can be specified using the `VERS-` and `COMP-` prefixes.
[4ee45a1]351
[2b16350]352So in order to remove or add a specific TLS version from the `NORMAL`
353set, use `NORMAL:!VERS-SSL3.0`.  And to enable zlib compression use
354`NORMAL:+COMP-DEFLATE`.
[4ee45a1]355
356
[2b16350]357However it is recommended not to add compression at this level.  With
358the `NONE` set, in order to be usable, you have to specify a complete
359set of combinations of protocol versions, cipher algorithms
360(`AES-128-CBC`), key exchange algorithms (`RSA`), message
361authentication codes (`SHA1`) and compression methods (`COMP-NULL`).
[4ee45a1]362
[2b16350]363You can find a list of all supported Ciphers, Versions, MACs, etc.  by
364running `gnutls-cli --list`.
[4ee45a1]365
[2b16350]366The special keyword `%COMPAT` will disable some security features such
[4ee45a1]367as protection against statistical attacks to ciphertext data in order to
368achieve maximum compatibility (some broken mobile clients need this).
369
[2b16350]370`GnuTLSExportCertificates`
371--------------------------
[4ee45a1]372
[2b16350]373Export the PEM encoded certificates to CGIs
[4ee45a1]374
[999cdec]375    GnuTLSExportCertificates [off|on|SIZE]
[4ee45a1]376
[2b16350]377Default: `off`\
378Context: server config, virtual host
[4ee45a1]379
[999cdec]380This directive configures exporting the full certificates of the
381server and the client to CGI scripts via the `SSL_SERVER_CERT` and
382`SSL_CLIENT_CERT` environment variables. The exported certificates
383will be PEM-encoded (if X.509) or ASCII-armored (if OpenPGP) up to the
384size given.  The type of the certificate will be exported in
385`SSL_SERVER_CERT_TYPE` and `SSL_CLIENT_CERT_TYPE`.
386
387SIZE should be an integer number of bytes, or may be written with a
388trailing `K` to indicate kibibytes.  `off` means the same thing as
389`0`, in which case the certificates will not be exported to the
390environment.  `on` is an alias for `16K`.  If a non-zero size is
391specified for this directive, but a certificate is too large to fit in
392the buffer, then the corresponding environment variable will contain
393the fixed string `GNUTLS_CERTIFICATE_SIZE_LIMIT_EXCEEDED`.
394
[2b16350]395With GnuTLSExportCertificates enabled, `mod_gnutls` exports the same
396environment variables to the CGI process as `mod_ssl`.
[4ee45a1]397
[d8ae2a0]398
399`SSLProxyEngine`
400--------------
401
402Enable TLS proxy connections for this virtual host
403
404    SSLProxyEngine [on|off]
405
406Default: *off*\
407Context: virtual host
408
409This directive enables support for TLS proxy connections for a virtual
410host.
411
412`GnuTLSProxyCAFile`
413--------------------
414
415Set to the PEM Encoded Certificate Authority Certificate
416
417    GnuTLSProxyCAFile FILEPATH
418
419Default: *none*\
420Context: server config, virtual host
421
422Takes an absolute or relative path to a PEM Encoded Certificate to use
423as a Certificate Authority when verifying certificates provided by
424proxy back end servers. This file may contain a list of trusted
425authorities. If not set, verification of TLS back end servers will
426always fail due to lack of a trusted CA.
427
428`GnuTLSProxyCertificateFile`
429-----------------------
430
431Set to the PEM Encoded Client Certificate
432
433    GnuTLSProxyCertificateFile FILEPATH
434
435Default: *none*\
436Context: server config, virtual host
437
438Takes an absolute or relative path to a PEM-encoded X.509 certificate
439to use as this Server's End Entity (EE) client certificate for TLS
440client authentication in proxy TLS connections. If you need to supply
441certificates for intermediate Certificate Authorities (iCAs), they
442should be listed in sequence in the file, from EE to the iCA closest
443to the root CA. Optionally, you can also include the root CA's
444certificate as the last certificate in the list.
445
446If not set, TLS client authentication will be disabled for TLS proxy
447connections. If set, `GnuTLSProxyKeyFile` must be set as well to
448provide the matching private key.
449
450`GnuTLSProxyKeyFile`
451---------------
452
453Set to the PEM Encoded Private Key
454
455    GnuTLSProxyKeyFile FILEPATH
456
457Default: *none*\
458Context: server config, virtual host
459
460Takes an absolute or relative path to the Private Key matching the
461certificate configured using the `GnuTLSProxyCertificateFile`
462directive. This key cannot currently be password protected.
463
464**Security Warning:**\
465This private key must be protected. It is read while Apache is still
466running as root, and does not need to be readable by the nobody or
467apache user.
468
[4ee45a1]469* * * * *
470
471Configuration Examples
[2b16350]472======================
[4ee45a1]473
[2b16350]474Simple Standard SSL Example
475---------------------------
[4ee45a1]476
477The following is an example of standard SSL Hosting, using one IP
478Addresses for each virtual host
479
[2b16350]480     # Load the module into Apache.
481     LoadModule gnutls_module modules/mod_gnutls.so
482     GnuTLSCache gdbm /var/cache/www-tls-cache
483     GnuTLSCacheTimeout 500
484     # With normal SSL Websites, you need one IP Address per-site.
485     Listen 1.2.3.1:443
486     Listen 1.2.3.2:443
487     Listen 1.2.3.3:443
488     Listen 1.2.3.4:443
489     <VirtualHost 1.2.3.1:443>
490     GnuTLSEnable on
491     GnuTLSPriorities NONE:+AES-128-CBC:+3DES-CBC:+ARCFOUR-128:+RSA:+DHE-RSA:+DHE-DSS:+SHA1:+MD5:+COMP-NULL
492     DocumentRoot /www/site1.example.com/html
493     ServerName site1.example.com:443
494     GnuTLSCertificateFile conf/ssl/site1.crt
495     GnuTLSKeyFile conf/ss/site1.key
496     </VirtualHost>
497     <VirtualHost 1.2.3.2:443>
498     # This virtual host enables SRP authentication
499     GnuTLSEnable on
500     GnuTLSPriorities NORMAL:+SRP
501     DocumentRoot /www/site2.example.com/html
502     ServerName site2.example.com:443
503     GnuTLSSRPPasswdFile conf/ssl/tpasswd.site2
504     GnuTLSSRPPasswdConfFile conf/ssl/tpasswd.site2.conf
505     </VirtualHost>
506     <VirtualHost 1.2.3.3:443>
507     # This server enables SRP, OpenPGP and X.509 authentication.
508     GnuTLSEnable on
509     GnuTLSPriorities NORMAL:+SRP:+SRP-RSA:+SRP-DSS
510     DocumentRoot /www/site3.example.com/html
511     ServerName site3.example.com:443
512     GnuTLSCertificateFile conf/ssl/site3.crt
513     GnuTLSKeyFile conf/ss/site3.key
514     GnuTLSClientVerify ignore
515     GnuTLSPGPCertificateFile conf/ss/site3.pub.asc
516     GnuTLSPGPKeyFile conf/ss/site3.sec.asc
517     GnuTLSSRPPasswdFile conf/ssl/tpasswd.site3
518     GnuTLSSRPPasswdConfFile conf/ssl/tpasswd.site3.conf
519     </VirtualHost>
520     <VirtualHost 1.2.3.4:443>
521     GnuTLSEnable on
522     # %COMPAT disables some security features to enable maximum compatibility with clients.
523     GnuTLSPriorities NONE:+AES-128-CBC:+ARCFOUR-128:+RSA:+SHA1:+MD5:+COMP-NULL:%COMPAT
524     DocumentRoot /www/site4.example.com/html
525     ServerName site4.example.com:443
526     GnuTLSCertificateFile conf/ssl/site4.crt
527     GnuTLSKeyFile conf/ss/site4.key
528     </VirtualHost>
529
530Server Name Indication Example
531------------------------------
532
533`mod_gnutls` can also use "Server Name Indication", as specified in
534RFC 3546.  This allows hosting many SSL Websites, with a Single IP
535Address.  Currently all the recent browsers support this
536standard. Here is an example, using SNI: ` `
537
538
539     # Load the module into Apache.
540     LoadModule gnutls_module modules/mod_gnutls.so
541     # With normal SSL Websites, you need one IP Address per-site.
542     Listen 1.2.3.1:443
543     # This could also be 'Listen *:443',
544     # just like '*:80' is common for non-https
545     # No caching. Enable session tickets. Timeout is still used for
546     # ticket expiration.
547     GnuTLSCacheTimeout 600
548     # This tells apache, that for this IP/Port combination, we want to use
549     # Name Based Virtual Hosting. In the case of Server Name Indication,
550     # it lets mod_gnutls pick the correct Server Certificate.
551     NameVirtualHost 1.2.3.1:443
552     <VirtualHost 1.2.3.1:443>
553     GnuTLSEnable on
554     GnuTLSSessionTickets on
555     GnuTLSPriorities NORMAL
556     DocumentRoot /www/site1.example.com/html
557     ServerName site1.example.com:443
558     GnuTLSCertificateFile conf/ssl/site1.crt
559     GnuTLSKeyFile conf/ss/site1.key
560     </VirtualHost>
561     <VirtualHost 1.2.3.1:443>
562     GnuTLSEnable on
563     GnuTLSPriorities NORMAL
564     DocumentRoot /www/site2.example.com/html
565     ServerName site2.example.com:443
566     GnuTLSCertificateFile conf/ssl/site2.crt
567     GnuTLSKeyFile conf/ss/site2.key
568     </VirtualHost>
569     <VirtualHost 1.2.3.1:443>
570     GnuTLSEnable on
571     GnuTLSPriorities NORMAL
572     DocumentRoot /www/site3.example.com/html
573     ServerName site3.example.com:443
574     GnuTLSCertificateFile conf/ssl/site3.crt
575     GnuTLSKeyFile conf/ss/site3.key
576     </VirtualHost>
577     <VirtualHost 1.2.3.1:443>
578     GnuTLSEnable on
579     GnuTLSPriorities NORMAL
580     DocumentRoot /www/site4.example.com/html
581     ServerName site4.example.com:443
582     GnuTLSCertificateFile conf/ssl/site4.crt
583     GnuTLSKeyFile conf/ss/site4.key
584     </VirtualHost>
[4ee45a1]585
586
[2b16350]587* * * * *
[4ee45a1]588
[2b16350]589Performance Issues
590==================
591
592`mod_gnutls` by default uses conservative settings for the server.
593You can fine tune the configuration to reduce the load on a busy
594server.  The following examples do exactly this:
595
596
597     # Load the module into Apache.
598     LoadModule gnutls_module modules/mod_gnutls.so
599     # Using 4 memcache servers to distribute the SSL Session Cache.
600     GnuTLSCache memcache "mc1.example.com mc2.example.com mc3.example.com mc4.example.com"
601     GnuTLSCacheTimeout 600
602     Listen 1.2.3.1:443
603     NameVirtualHost 1.2.3.1:443
604     <VirtualHost 1.2.3.1:443>
605     GnuTLSEnable on
606     # Here we disable the Perfect forward secrecy ciphersuites (DHE)
607     # and disallow AES-256 since AES-128 is just fine.
608     GnuTLSPriorities NORMAL:!DHE-RSA:!DHE-DSS:!AES-256-CBC:%COMPAT
609     DocumentRoot /www/site1.example.com/html
610     ServerName site1.example.com:443
611     GnuTLSCertificateFile conf/ssl/site1.crt
612     GnuTLSKeyFile conf/ss/site1.key
613     </VirtualHost>
614     <VirtualHost 1.2.3.1:443>
615     GnuTLSEnable on
616     # Here we instead of disabling the DHE ciphersuites we use
617     # Diffie Hellman parameters of smaller size than the default (2048 bits).
618     # Using small numbers from 768 to 1024 bits should be ok once they are
619     # regenerated every few hours.
620     # Use "certtool --generate-dh-params --bits 1024" to get those
621     GnuTLSDHFile /etc/apache2/dh.params
622     GnuTLSPriorities NORMAL:!AES-256-CBC:%COMPAT
623     DocumentRoot /www/site2.example.com/html
624     ServerName site2.example.com:443
625     GnuTLSCertificateFile conf/ssl/site2.crt
626     GnuTLSKeyFile conf/ss/site2.key
627     </VirtualHost>
[4ee45a1]628
629* * * * *
630
[2b16350]631Environment Variables
632=====================
[4ee45a1]633
[2b16350]634`mod_gnutls` exports the following environment variables to scripts.
635These are compatible with `mod_ssl`.
[4ee45a1]636
[2b16350]637`HTTPS`
638-------
[4ee45a1]639
[2b16350]640Can be `on` or `off`
[4ee45a1]641
[2b16350]642`SSL_VERSION_LIBRARY`
643---------------------
[4ee45a1]644
[2b16350]645The version of the GnuTLS library
[4ee45a1]646
[2b16350]647`SSL_VERSION_INTERFACE`
648-----------------------
[4ee45a1]649
650The version of this module
651
[2b16350]652`SSL_PROTOCOL`
653--------------
[4ee45a1]654
[2b16350]655The SSL or TLS protocol name (such as `TLS 1.0` etc.)
[4ee45a1]656
[2b16350]657`SSL_CIPHER`
658------------
[4ee45a1]659
660The SSL or TLS cipher suite name
661
[2b16350]662`SSL_COMPRESS_METHOD`
663---------------------
[4ee45a1]664
[2b16350]665The negotiated compression method (`NULL` or `DEFLATE`)
[4ee45a1]666
[2b16350]667`SSL_SRP_USER`
668--------------
[4ee45a1]669
670The SRP username used for authentication (only set when
[2b16350]671`GnuTLSSRPPasswdFile` and `GnuTLSSRPPasswdConfFile` are configured).
[4ee45a1]672
[2b16350]673`SSL_CIPHER_USEKEYSIZE` & `SSL_CIPHER_ALGKEYSIZE`
674-------------------------------------------------
[4ee45a1]675
676The number if bits used in the used cipher algorithm.
677
678This does not fully reflect the security level since the size of
679RSA or DHE key exchange parameters affect the security level too.
680
[5674676]681`SSL_DH_PRIME_BITS`
682-------------------
683
684The number if bits in the modulus for the DH group, if DHE or static
685DH is used.
686
687This will not be set if DH is not used.
688
[2b16350]689`SSL_CIPHER_EXPORT`
690-------------------
[4ee45a1]691
[2b16350]692`True` or `False`. Whether the cipher suite negotiated is an export one.
[4ee45a1]693
[2b16350]694`SSL_SESSION_ID`
695----------------
[4ee45a1]696
697The session ID negotiated in this session. Can be the same during client
698reloads.
699
[2b16350]700`SSL_CLIENT_V_REMAIN`
701---------------------
[4ee45a1]702
703The number of days until the client's certificate is expired.
704
[2b16350]705`SSL_CLIENT_V_START`
706--------------------
[4ee45a1]707
708The activation time of client's certificate.
709
[2b16350]710`SSL_CLIENT_V_END`
711------------------
[4ee45a1]712
713The expiration time of client's certificate.
714
[2b16350]715`SSL_CLIENT_S_DN`
716-----------------
[4ee45a1]717
718The distinguished name of client's certificate in RFC2253 format.
719
[2b16350]720`SSL_CLIENT_I_DN`
721-----------------
[4ee45a1]722
723The SSL or TLS cipher suite name
724
[2b16350]725`SSL_CLIENT_S_AN%`
726------------------
[4ee45a1]727
[2b16350]728These will contain the alternative names of the client certificate (`%` is
[4ee45a1]729a number starting from zero).
730
[2b16350]731The values will be prepended by `DNSNAME:`, `RFC822NAME:` or `URI:`
[4ee45a1]732depending on the type.
733
[2b16350]734If it is not supported the value `UNSUPPORTED` will be set.
[4ee45a1]735
[2b16350]736`SSL_SERVER_M_SERIAL`
737---------------------
[4ee45a1]738
739The serial number of the server's certificate.
740
[2b16350]741`SSL_SERVER_M_VERSION`
742----------------------
[4ee45a1]743
744The version of the server's certificate.
745
[2b16350]746`SSL_SERVER_A_SIG`
747------------------
[4ee45a1]748
749The algorithm used for the signature in server's certificate.
750
[2b16350]751`SSL_SERVER_A_KEY`
752------------------
[4ee45a1]753
754The public key algorithm in server's certificate.
755
[999cdec]756`SSL_SERVER_CERT`
[2b16350]757------------------
[4ee45a1]758
[999cdec]759The PEM-encoded (X.509) or ASCII-armored (OpenPGP) server certificate
760(see the `GnuTLSExportCertificates` directive).
[4ee45a1]761
[2b16350]762`SSL_SERVER_CERT_TYPE`
763----------------------
[4ee45a1]764
[2b16350]765The certificate type can be `X.509` or `OPENPGP`.
[ac32bb5]766
[999cdec]767`SSL_CLIENT_CERT`
768------------------
769
770The PEM-encoded (X.509) or ASCII-armored (OpenPGP) client certificate
771(see the `GnuTLSExportCertificates` directive).
772
[ac32bb5]773`SSL_CLIENT_CERT_TYPE`
774----------------------
775
776The certificate type can be `X.509` or `OPENPGP`.
Note: See TracBrowser for help on using the repository browser.