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
|
tlsproxy
========
`tlsproxy` is a TLS proxy written with GnuTLS. It is mostly designed as an
example of how to use asynchronous (non-blocking) I/O with GnuTLS. More
accurately, it was designed so I could learn how to do it. I think I've
got it right.
To that end, it's been divided up as follows:
* `crypto.c` does all the crypto, and `tlssession_mainloop()` does the hard work.
* `buffer.c` provides ring buffer support.
* `tlsproxy.c` deals with command line options and connecting sockets.
It can be used in two modes:
* Client mode (default). Listens on an unencrypted port, connects to
an encrypted port.
* Server mode (run with `-s`). Listens on an encrypted port, connects to
an unencrypted port.
Usage
=====
```
tlsproxy
Usage:
tlsproxy [OPTIONS]
A TLS client or server proxy
Options:
-c, --connect ADDRESS Connect to ADDRESS
-l, --listen ADDRESS Listen on ADDRESS
-K, --key FILE Use FILE as private key
-C, --cert FILE Use FILE as public key
-A, --cacert FILE Use FILE as public CA cert file
-H, --hostname HOSTNAME Use HOSTNAME to validate the CN of the peer
rather than hostname extracted from -C option
-s, --server Run the listen port encrypted rather than the
connect port
-i, --insecure Do not validate certificates
-n, --nofork Do not fork off (aids debugging); specify twice
to stop forking on accept as well
-d, --debug Turn on debugging
-h, --help Show this usage message
```
License
=======
MIT
|