• Stars
    star
    241
  • Rank 167,643 (Top 4 %)
  • Language
    C
  • Created about 13 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Various tools for testing RFC 5077

Various tools for testing RFC 5077

RFC 5077 is a session resumption mechanism for TLS without server-side state. You'll find here various tools related to testing availability of RFC 5077.

This mechanism is an extension for TLS. If a client or a server does not support TLS, it does not support RFC 5077.

Clients

The following clients are implemented:

  • openssl-client
  • gnutls-client
  • nss-client

They all take an host and a port as argument. You need to use -r flag to really test reconnection. You can also add -T to disable ticket supports (RFC 5077) and -S to disable session ID support. However, disabling session ID may be difficult, therefore, it may not really have the expected effect.

Only OpenSSL client is complete enough. GNU TLS does not allow easy display of session contents and NSS does not allow to check if a session was resumed.

Additionally, rfc5077-client proposes some more advanced tests against a server or a pool of servers. It will try to reuse sessions with and without tickets and will query several time each IP of a pool of servers. Use this if you want to check support of SSL session resume of a server or a pool of servers.

It is possible that those clients may fail if you don't have a working IPv6 connectivity. Get an IPv6 connectivity. ;-)

Servers

rfc5077-server allows you to test support of RFC 5077 in the client of your choice. It will returns an HTML page containing some Javascript code to test browsers. You need to specify 4 ports. They will respectively behave as follow:

  1. No session cache, no ticket support
  2. Session cache, no ticket support
  3. Session cache, ticket support
  4. No session cache, ticket support

While this server has some shortcoming, it should be relatively performant and you can try to bench it. It should also be secure enough to be put on the Internet.

Misc

rfc5077-pcap will analyze SSL handshakes contained in PCAP files. It will try to detect "Client Hello". It will extract IP addresses, protocol version, Session ID, cipher suites, compression methods and detect the use of SNI extension and ticket extension. It should be used to determine how many clients support one cipher suite or how many clients support ticket extension.

The CSV file generated by this program can then be used with rfc5077-stats.py that will produce some graphics (and also build a SQLite database that you can use to make queries).

Getting Started

If you've just cloned this from git, run the following to ensure that the submodules http-parser and httpagentparser are installed:

  • git submodule init
  • git submodule update

Then run make to build the executables. This currently needs OpenSSL 1.1. If you have an older version, go back to branch openssl-1.0:

  • git checkout openssl-1.0

Dependencies

To compile these you will need a few dependencies that are the nss, openssl, gnutls, libpcap, libev and nspr headers and libraries:

On Fedora the dependencies are:

  • openssl-devel
  • gnutls-devel
  • nss-devel
  • libpcap-devel
  • libev-devel
  • nspr-devel
  • pkgconfig

On Debian, the dependencies can be installed with the following command:

apt-get install libssl-dev gnutls-dev libnss3-dev libpcap-dev libev-dev libnspr4-dev pkg-config

On Osx the dependencies are: (which can be installed via homebrew)

# install dependencies
brew install [email protected] gnutls nss libpcap libev pkg-config

# [email protected], nss, libpcap are keg-only we should export some env before make
export PATH=$(brew --prefix)/opt/nss/bin:$PATH
export PATH=$(brew --prefix)/opt/libpcap/bin:$PATH
export PKG_CONFIG_PATH=$(brew --prefix)/opt/[email protected]/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=$(brew --prefix)/opt/nss/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=$(brew --prefix)/opt/libpcap/lib/pkgconfig:$PKG_CONFIG_PATH

# compile
make

More Repositories

1

network-lab

Networking lab using root-less VM
Shell
528
star
2

dashkiosk

Managing dashboards on various displays (especially those running on Android)
JavaScript
354
star
3

hellogopher

Makefile to build a Go project
Makefile
301
star
4

nodecastor

Experiment to implement a sender API for Chromecast in Node.js
JavaScript
180
star
5

snimpy

interactive SNMP tool with Python
Python
180
star
6

video2hls

Prepare a video to be streamed with HLS
Python
171
star
7

awesome-configuration

My ~/.config/awesome directory
Lua
127
star
8

eudyptula-boot

Boot a Linux kernel in a VM without a dedicated root filesystem.
Shell
112
star
9

pragmatic-debian-packages

Pragmatic Debian packaging
Makefile
98
star
10

serverspec-example

Advanced use example of serverspec
JavaScript
98
star
11

jchroot

a chroot with more isolation
C
96
star
12

wiremaps

layer 2 network discovery application
Python
89
star
13

zshrc

My .zshrc
Shell
84
star
14

bootstrap.c

Boilerplate for small C projects (autotools)
C
74
star
15

i3wm-configuration

Python
72
star
16

vincent.bernat.ch

My own website
HTML
71
star
17

extend-netsnmp

Various examples on how to extend NetSNMP agent
C
46
star
18

ssl-dos

Various tools related to SSL denial of service
C
46
star
19

python-script

Sample self-contained Python script
Python
36
star
20

systemtap-cookbook

Some tools using systemtap
Python
29
star
21

vbeterm

Custom terminal based on VTE
C
21
star
22

xssproxy

Forward freedesktop.org Idle Inhibition Service calls to Xss
C
20
star
23

ip_vs_mh

Backport of ip_vs_mh for Linux (consistent hashing with Google's Maglev algorithm)
C
17
star
24

lanco

task launcher which does not want to be an init program
C
16
star
25

bootstrap.c-web

Boilerplate for small C projects (autotools) exporting a REST+SSE+WS API
C
14
star
26

puppet-workstation

Puppet setup to install my own workstation
Puppet
14
star
27

udpproxy

a Netfilter powered UDP proxy
C
13
star
28

cve-2015-3456

Experiments related to CVE-2015-3456
C
12
star
29

puppet-eizo

Puppet repository for "eizo"
Shell
12
star
30

ethtool-snmpd

Export ethtool stuff through SNMP
C
12
star
31

dot.emacs

My Emacs (and Gnus) configuration files
Emacs Lisp
12
star
32

fvwm-configuration

My configuration for fvwm
Shell
11
star
33

dashkiosk-android

Android application for Dashkiosk
Java
9
star
34

ansible-custom-module-examples

See https://vincent.bernat.ch/en/blog/2020-custom-ansible-module
Python
9
star
35

haproxy-debian-repository-wizard

Web application to select the appropriate Debian repository for HAProxy
HTML
9
star
36

junos-mode

Emacs major mode for JunOS configuration file
Emacs Lisp
9
star
37

ripe-atlas-lowest-latency

RIPE Atlas tool to determine the endpoint with the lowest latency
Python
8
star
38

ip_vs_csh

Consistent source hashing scheduler for Linux IPVS
C
8
star
39

ro-ro-tcp

performance enhancing proxy for TCP over links with high latency and moderate error rates
C
8
star
40

vpnoo

an IPSEc + XAuth client for Mac OS X
C
8
star
41

asn2org

AS numbers to organization names
Python
7
star
42

nixops-take1

Playground for NixOps
Nix
7
star
43

quagga

Quagga is free software that manages various IPv4 and IPv6 routing protocols.
C
5
star
44

flappy-bird-reborn-multiplayer

A "Flappy Bird" clone with multiplayer ability.
JavaScript
4
star
45

old-turbo-pascal-programs

Old programs that I wrote when I was a kid.
Pascal
4
star
46

cdktf-take1

Musing around CDKTF
TypeScript
3
star
47

splitpkcs12

PKCS#12 certificate splitter
C
3
star
48

net-snmp

Net-SNMP (not official)
C
3
star
49

ipoo

gather information about IP and hostnames
Python
3
star
50

dosbox

DOSBox, an x86 emulator with DOS. ⚠️ Not official. Not a complete mirror. Not updated.
C++
3
star
51

last-resort-gateway

Manage a last resort gateway
Go
2
star
52

pulumi-vultr

Pulumi provider for Vultr (based on the Terraform one), not official
Python
2
star
53

pygments-junos

JunOS lexer for pygments
Python
2
star
54

pygments-ios

IOS lexer for pygments
Python
2
star
55

homemanager-configuration

home-manager configuration for use with Debian Sid
Nix
2
star
56

www.une-oasis-une-ecole.fr

Source code for http://www.une-oasis-une-ecole.fr
HTML
2
star
57

Kitero

Interface and QoS switcher for router
Python
2
star
58

pulumi-gandi-old

Pulumi provider for Gandi, based on Terraform, not official
Python
1
star
59

pygments-haproxy

HAProxy lexer for Pygments
Python
1
star
60

QCss-3

load-balancer web service
Python
1
star