No description
Find a file
Vincent Hanquez 0e22ae7db4 check that we didn't receive any extensions from the server that we didn't sent.
In case that happens, fail the handshake with an unsupported extension alert.
2012-08-27 08:25:08 +01:00
Network check that we didn't receive any extensions from the server that we didn't sent. 2012-08-27 08:25:08 +01:00
Tests start using Client and Server distinction for want client cert and session resume with 2012-07-12 09:02:10 +01:00
.gitignore add extra stuff in gitignore. 2011-12-20 07:35:40 +00:00
LICENSE update LICENSE 2011-06-07 08:28:49 +01:00
README.md add some debug info 2012-04-20 21:05:46 +01:00
Setup.hs initial import 2010-09-09 22:47:19 +01:00
Tests.hs Add client cert handshake messages to tests. 2012-07-28 14:40:37 +02:00
tls.cabal split server from handshake. 2012-08-18 23:13:13 +01:00
TODO update documentation: TLS1.2 is working 2011-08-17 20:50:57 +01:00

haskell TLS

This library provide native Haskell TLS and SSL protocol implementation for server and client.

Description

This provides a high-level implementation of a sensitive security protocol, eliminating a common set of security issues through the use of the advanced type system, high level constructions and common Haskell features.

Only core protocol available here, have a look at the tls-extra package for default ciphers, compressions and certificates functions.

Features

  • tiny code base (more than 20 times smaller than openSSL, and 10 times smaller than gnuTLS)
  • permissive license: BSD3.
  • supported versions: SSL3, TLS1.0, TLS1.1, TLS1.2.
  • key exchange supported: only RSA.
  • bulk algorithm supported: any stream or block ciphers.
  • supported extensions: secure renegociation, next protocol negotiation (draft 2)

Common Issues

The tools mentioned below are all available from the tls-debug package.

  • Certificate issues

It's useful to run the following command, which will connect to the destination and retrieve the certificate chained used.

tls-retrievecertificate -d <destination> -p <port> -v -c

As an output it will print every certificates in the chain and will gives the issuer and subjects of each. It creates a chain where issuer of certificate is the subject of the next certificate part of the chain:

(subject #1, issuer #2) -> (subject #2, issuer #3) -> (subject #3, issuer #3)

A "CA is unknown" error indicates that your system doesn't have a certificate in the trusted store belonging to any of the node of the chain.