[PATCH] Add (alpha) GnuTLS support to Mathopd

Mr Allwyn Fernandes <[email protected]> Mon, 24 Sep 2007 14:32:13 +1000
Newsgroups gmane.network.mathopd
Organization Stobor Pty Ltd
Message-ID <[email protected]>
--Boundary-00=_N3z9G8V4hGP+BIN
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi all,

While I usually hold off on sending in patches until they are complete with 
documentation and fully tested, this one has been a Wishlist item for Mathopd 
for a while, so I thought I'd send it through for anyone to play with...

It is a preliminary patch for TLSv1/SSLv3 support for Mathopd 1.5p6, based on 
GnuTLS. I haven't had time to clean this up and put in the relevant 
documentation as in the above patches, but I wanted to get it out there for 
people to try. The quick patch created here is a straight dump of my local 
svn repository, so it includes my other two patches for now. When I get a 
chance later, I should clean it up to only include GnuTLS, and provide the 
1.6b9 version of the patch, too.

WARNING: This patch is only trivially tested, and is considered ALPHA quality 
for the moment! Use at your own risk, but feel free to let me know about any 
problems you have...

Quick HowTo: 

	Server { 
		TLS { 
			CACertFile ca-cert.pem 
			CRLFile crl.pem 
			CertFile cert.pem 
			KeyFile key.pem 
			DHParamsFile dhparams.pem 
			DHBits 1024 
		} 
		Control { 
			Alias / 
			Location /www/ 
		} 
	}

CertFile is the only required option, but if KeyFile is not supplied, CertFile 
must contain the private key as well. DHBits defaults to 1024, DH Params are 
generated if not supplied (but this can take some time, so for repeated 
testing, a dhparams file is suggested).

Everything seems to work, so far; I've not tested it extensively, but plain 
files and cgi scripts both appear to work as expected. Most things produce 
sensible error messages, but again, I haven't tested all possibilities.

This patch does NOT support SSLv2. I don't know if anyone on the planet is 
still using SSLv2 (it has been deprecated for over a decade), but when I get 
a chance I'll see how hard it is to include as well.

Patch: http://opensource.stobor.net/mathopd/gnutls.1.5p6.diff (or see 
attached). 

As usual, apply using:

/tmp/mathopd-1.5p6$ gunzip gnutls.1.5p6.diff.gz | patch -p1

Further details will follow at http://opensource.stobor.net/mathopd/#GnuTLS

As always, if you have any problems, questions or comments, please don't 
hesitate to get back to me.

Cheers,

Allwyn.

-- 
Allwyn Fernandes
Director
Stobor Pty Ltd

Mobile: + 61 430 436 758
LinkedIn: http://www.linkedin.com/in/AllwynFernandes

--Boundary-00=_N3z9G8V4hGP+BIN
Content-Type: application/x-gzip;
  name="gnutls.1.5p6.diff.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="gnutls.1.5p6.diff.gz"

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
Ci9EIlYAAA==

--Boundary-00=_N3z9G8V4hGP+BIN--