aboutsummaryrefslogtreecommitdiffstats
path: root/README
blob: 557ba777cbf5627ff495d62b8dfbb583035436f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
mod_gnutls 

This module started back in September of 2004 because I was tired of trying to
fix bugs in mod_ssl.  mod_ssl is a giant beast of a module -- no offense to it's 
authors is intended -- but I believe it has fallen prey to massive feature bloat.

When I started hacking on httpd, mod_ssl remained a great mystery to me, and 
when I actually looked at it, I ran away.  The shear ammount code is huge, and it 
does not conform to the style guidelines.  It was painful to read, and even harder
to debug.  I wanted to understand how it worked, and I had recently heard about 
GnuTLS, so long story short, I decided to implement a mod_gnutls.

Lines of Code in mod_ssl: 15,324
Lines of Code in mod_gnutls: 1,886

Because of writing mod_gnutls, I now understand how input and output filters work, 
better than I ever thought possible.  It was a little painful at times, and some parts
lift code and ideas directly from mod_ssl. Kudos to the original authors of mod_ssl.

----------------------------

Author: Paul Querna <chip force-elite.com

License: Apache Software License v2.0. (see the LICENSE file for details)

Current Status:
- SSL and TLS connections with all popular browsers work!
- Sets some enviromental vars for scripts
- Supports Memcached as a distributed SSL Session Cache
- Supports DBM as a local SSL Session Cache

Future Development:
- Support for Server Name Indication (partial support is in, but disabled)
- Support for Client Certificates

Basic Configuration:

LoadModule gnutls_module  modules/mod_gnutls.so

# mod_gnutls can optionaly use a memcached server to store it's SSL Sessions.
# This is useful in a cluster enviroment, where you want all of your servers 
# to share a single SSL Session Cache.
#GnuTLSCache memcache "127.0.0.1 server2.example.com server3.example.com"

# The Default method is to use a DBM backed Cache.  It isn't super fast, but 
# it is portable and does not require another server to be running like memcached.
GnuTLSCache dbm conf/gnutls_cache

<VirtualHost 1.2.3.4:443>
    # insert other directives ... here ...

    # This enables the mod_gnutls Handlers for this Virtual Host
    GnuTLSEnable On

    # This is the Private key for your server.
    GnuTLSKeyFile conf/server.key

    # This is the Server Certificate.  
    GnuTLSCertificateFile conf/server.cert
</VirtualHost>
ighlight'>| | | | such as SDBM had serious limitations. Thanks to Hardy Griech for pointing out. * The GnuTLSCache variable now can be given the specificGravatar Nikos Mavrogiannopoulos 2010-09-23 | | | | | option "sdbm" instead of "dbm". "dbm" will use the default dbm type of libapr while sdbm will force sdbm to be used. * Corrected behavior in Keep-Alive connections (do notGravatar Nikos Mavrogiannopoulos 2010-09-22 | | | | terminate the connection prematurely) * Safer usage of session variable to prevent segmentation faults on closure. ↵Gravatar Nikos Mavrogiannopoulos 2010-08-18 | | | | Should solve issue #106. * Depend on libgnutls for the activation and expiration time checks.Gravatar Nikos Mavrogiannopoulos 2010-07-02 | * Session tickets are enabled by default.Gravatar Nikos Mavrogiannopoulos 2010-07-02 | * Added option to turn on/off session tickets.Gravatar Nikos Mavrogiannopoulos 2010-07-01 | * Force SDBM.Gravatar Nikos Mavrogiannopoulos 2010-07-01 | * More libgcrypt fixes.Gravatar Nikos Mavrogiannopoulos 2010-06-30 | * Use libgcrypt calls only if gnutls is older than 2.11.0Gravatar Nikos Mavrogiannopoulos 2010-06-30 | * Check the cache DB every 15 minutes instead of checking on every write.Gravatar Nikos Mavrogiannopoulos 2010-06-27 | * open the database as readonly when fetching.Gravatar Nikos Mavrogiannopoulos 2010-06-27 | * properly initialize variable.Gravatar Nikos Mavrogiannopoulos 2010-06-27 | * Added support for session tickets.Gravatar Nikos Mavrogiannopoulos 2010-06-27 | * Corrected issue with firefox and long post data (had to do ↵Gravatar Nikos Mavrogiannopoulos 2010-03-15 | | | | | with read function not handling EAGAIN and EINTR correctly). * On connection termination be polite and send a bye (common handling of EOC ↵Gravatar Nikos Mavrogiannopoulos 2009-07-21 | | | | and EOS). * removed APR_BUCKET_IS_EOS. Doesn't seem appropriate at this point.Gravatar Nikos Mavrogiannopoulos 2009-07-21 | * More fixes related to bug #102Gravatar Nikos Mavrogiannopoulos 2009-07-20 | * Applied patch of jmdesp that allows certificate lists by client.Gravatar Nikos Mavrogiannopoulos 2009-07-20 | * only call gnutls_bye on non null gnutls session.Gravatar Nikos Mavrogiannopoulos 2009-07-20 | * Avoid requesting certificate from client when we already have it. Patch by ↵Gravatar Nikos Mavrogiannopoulos 2009-06-30 | | | | AlainKnaff. * Applied patch by AlainKnaff to correctly verify certificates per directory. ↵Gravatar Nikos Mavrogiannopoulos 2009-06-30 | | | | | | | Patch by AlainKnaff. Solves: http://issues.outoforder.cc/view.php?id=93 * set srp username to empty string. Solves ↵Gravatar Nikos Mavrogiannopoulos 2009-06-30 | | | | http://issues.outoforder.cc/view.php?id=92 * Try to avoid bug http://issues.outoforder.cc/view.php?id=102Gravatar Nikos Mavrogiannopoulos 2009-06-30 | * Allow openpgp certificates that have infinite expiration time. Suggestion by ↵Gravatar Nikos Mavrogiannopoulos 2009-06-30 | | | | MattLoar at http://issues.outoforder.cc/view.php?id=96. * Applied patch to allow building with Apache 2.4. Patch by Arfrever Frehtes ↵Gravatar Nikos Mavrogiannopoulos 2009-06-30 | | | | Taifersar Arahesis <arfrever.fta@gmail.com>. * do not try to send empty packs using TLS. This this has a special meaning ↵Gravatar Nikos Mavrogiannopoulos 2009-06-13 | | | | and could result in clients closing connections. * if private key import fails try as pkcs8 key.Gravatar Nikos Mavrogiannopoulos 2009-05-21 | * removed limit on ca certificates' numberGravatar Nikos Mavrogiannopoulos 2009-01-24 | * Added patch to fix issue with mod_proxy. Investigation and patch by Alain Knaff.Gravatar Nikos Mavrogiannopoulos 2009-01-04 | | | | | | | | | | | | | It seems that the reason for this behavior is that the mgs_hook_pre_connection is being called both for incoming and outgoing (mod_proxy) connections. The attached patch (mod_proxy.patch) tries to find out in which case we are, and returns OK without doing anything if it is an outgoing connection. The method of telling both cases apart (namely, checking whether remote address' hostname is set) may seem somewhat hackish, but it does work, even if HostnameLookups is set to On. If ever there is a problem with this method, we might need to check local port instead (whether it is 443), but that would break if a non-standard https port was used. * APLOG_EMERG was replaced with APLOG_STARTUP for startup messages.Gravatar Nikos Mavrogiannopoulos 2008-11-02 | * increased max handshake triesGravatar Nikos Mavrogiannopoulos 2008-10-16 | * Allow openpgp-only sitesGravatar Nikos Mavrogiannopoulos 2008-10-01 | * better loggingGravatar Nikos Mavrogiannopoulos 2008-10-01 | * updated README file to account for openpgp keys --patch by Jack BatesGravatar Nikos Mavrogiannopoulos 2008-10-01 | * use memmove instead of memcpy because buffers might overlap. Gravatar Nikos Mavrogiannopoulos 2008-09-14 | * added check for invalid contextGravatar Nikos Mavrogiannopoulos 2008-09-14 | * depend on main libgnutls library (and gnutls 2.4.x)Gravatar Nikos Mavrogiannopoulos 2008-06-29 | * send database store failure as DEBUGGravatar Nikos Mavrogiannopoulos 2008-03-05 | * corrected SRP enable flag, and corrected the DBM hook support. It now free ↵Gravatar Nikos Mavrogiannopoulos 2008-03-03 | | | | data needed by some DBM providers. * added option to disable srp (for distributions that disable it in gnutls)Gravatar Nikos Mavrogiannopoulos 2008-02-20 | * prepare for an alpha releaseGravatar Nikos Mavrogiannopoulos 2008-01-24 | * (no commit message)Gravatar Nikos Mavrogiannopoulos 2007-12-16 | * more changes for openpgp support. Seems to be at a workable state.Gravatar Nikos Mavrogiannopoulos 2007-12-16 |