gecko/security/nss/cmd/ssltap/ssltap-manual.html

203 lines
7.2 KiB
HTML
Raw Normal View History

2008-06-06 05:40:11 -07:00
<HTML>
<!-- ***** BEGIN LICENSE BLOCK *****
- Version: MPL 1.1/GPL 2.0/LGPL 2.1
-
- The contents of this file are subject to the Mozilla Public License Version
- 1.1 (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS" basis,
- WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- for the specific language governing rights and limitations under the
- License.
-
- The Original Code is the Netscape security libraries.
-
- The Initial Developer of the Original Code is
- Netscape Communications Corporation.
- Portions created by the Initial Developer are Copyright (C) 1994-2000
- the Initial Developer. All Rights Reserved.
-
- Contributor(s):
-
- Alternatively, the contents of this file may be used under the terms of
- either the GNU General Public License Version 2 or later (the "GPL"), or
- the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- in which case the provisions of the GPL or the LGPL are applicable instead
- of those above. If you wish to allow use of your version of this file only
- under the terms of either the GPL or the LGPL, and not to allow others to
- use your version of this file under the terms of the MPL, indicate your
- decision by deleting the provisions above and replace them with the notice
- and other provisions required by the GPL or the LGPL. If you do not delete
- the provisions above, a recipient may use your version of this file under
- the terms of any one of the MPL, the GPL or the LGPL.
-
- ***** END LICENSE BLOCK ***** -->
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Mozilla/4.05 [en] (WinNT; U) [Netscape]">
<META NAME="Author" CONTENT="Steve Parkinson">
<TITLE>SSLTap - manual</TITLE>
</HEAD>
<BODY>
<H1>
SSLTap Manual page</H1>
<H3>
Summary</H3>
A command-line proxy which is SSL-aware. It snoops on TCP connections,
and displays the data going by, including SSL records and handshaking&nbsp;
if the connection is SSL.
<H3>
Synopsis</H3>
<TT>ssltap [-vhfsxl] [-p port] hostname:port</TT>
<P><TT>&nbsp;&nbsp; -v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [prints version string]</TT>
<BR><TT>&nbsp;&nbsp; -h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [outputs hex instead
of ASCII]</TT>
<BR><TT>&nbsp;&nbsp; -f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [turn on Fancy HTML
coloring]</TT>
<BR><TT>&nbsp;&nbsp; -s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [turn on SSL decoding]</TT>
<BR><TT>&nbsp;&nbsp; -x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [turn on extra SSL
hex dumps]</TT>
<BR><TT>&nbsp;&nbsp; -p port [specify rendezvous port (default 1924)]</TT>
<BR><TT>&nbsp;&nbsp; -l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [loop - continue
to wait for more connections]</TT>
<H3>
Description</H3>
SSLTap opens a socket on a rendezvous port, and waits for an incoming connection
(client side). Once this connection arrives, SSLTap makes another connection
to hostname:port (server side). It passes any data sent by the client to
the server, and vice versa. However, SSLTap will also display the data
to the console. It can do this for plain HTTP connections, or any TCP protocol.
However, SSLTap can also work with SSL streams, as detailed below.
<P>Let's assume your development machine is called 'intercept'. The simplest
usage of SSLTap is to run the command <TT>'ssltap www.netscape.com:80'</TT>
on intercept. The program will wait for an incoming connection on port
1924. Next you would want to go to your browser, and enter the URL http://intercept:1924.
The page retrieved by the browser will actually be gotten from the server
at www.netscape.com, but will go via SSLTap.
<P>Data sent from the client to the server is surrounded by a '--> [ ]'
symbol, and data sent from the server to the client, a '&lt;---[&nbsp;
]' symbol.
<P>You'll notice that the page retrieved with this example looks incomplete.
This is because SSLTap by default closes down after the first connection
is complete, so the browser is not able to load images. To make the SSLTap
continue to accept connections, switch on looping mode with the -l option.
<P>You can change the default rendezvous port to something else with the
-p option.
<P>The remaining options change the way the output is produced.
<P>The -f option prints 'fancy' output - in colored HTML. Data sent from
the client to the server is in blue. The server's reply is in red. This
is designed so you can load the output up into a browser. When used with
looping mode, the different connections are separated with horizontal lines.
<P>-x will turn on HEX printing. Instead of being output as ascii, the
data is shown as Hex, like this:
<UL><TT>&lt;-- [</TT>
<BR><TT>&nbsp;&nbsp; 0: 56 d5 16 3e&nbsp; a1 6b b1 4a&nbsp; 8f 67 c4 d7&nbsp;
21 2f 6f dd&nbsp; | V..>.k.J.g..!/o.</TT>
<BR><TT>&nbsp; 10: bb 22 c4 75&nbsp; 8c f4 ce 28&nbsp; 16 a6 20 aa&nbsp;
fb 9a 59 a1&nbsp; | .".u...(.. ...Y.</TT>
<BR><TT>&nbsp; 20: 51 91 14 d2&nbsp; fc 9f a7 ea&nbsp; 4d 9c f7 3a&nbsp;
9d 83 62 4a&nbsp; | Q.......M..:..bJ</TT>
<BR><TT>]</TT>
<BR>&nbsp;</UL>
<H4>
SSL Parse mode</H4>
The following options deal with SSL connections.
<UL>-s will turn on SSL parsing. (SSLTap doesn't automatically detect SSL
sessions.)
<BR>-x will turn on extra SSL hexdumps. Mostly, if SSL can decode the data,
it doesn't display the hex.</UL>
The following SSL3 Data structures are parsed: Handshake, ClientHello,
ServerHello, CertificateChain, Certificate. In addition, SSL2 ClientHello,
ServerHello, ClientMasterKey are also partly parsed. NO DECRYPTION IS PERFORMED
ON THE DATA. SSLTAP CANNOT DECRYPT the data.
<P>If a certificate chain is detected, DER-encoded certificates will be
saved into files in the current directory called 'cert.0x' where x is the
sequence number of the certificate.
<BR>&nbsp;
<H3>
Operation Hints</H3>
Often, you'll find that the server certificate does not get transferred,
or other parts of the handshake do not happen. This is because the browser
is taking advantage of session-id-reuse (using the handshake results from
a previous session). If you restart the browser, it'll clear the session
id cache.
<P>If you run the ssltap on a different machine that the ssl server you're
trying to connect to, the browser will complain that the host name you're
trying to connect to is different to the certificate, but it will still
let you connect, after showing you a dialog.
<H3>
Bugs</H3>
Please contact <A HREF="mailto:ssltap-support@netscape.com">ssltap-support@netscape.com</A>
for bug reports.
<H3>
History</H3>
2.1 - First public release (March 1998)
<BR>&nbsp;
<H3>
Other</H3>
For reference, here is a table of some well-known port numbers:
<BR>&nbsp;
<TABLE BORDER=2 >
<TR>
<TD>HTTP</TD>
<TD>80</TD>
</TR>
<TR>
<TD>SMTP</TD>
<TD>25</TD>
</TR>
<TR>
<TD>HTTPS</TD>
<TD>443</TD>
</TR>
<TR>
<TD>FTP</TD>
<TD>21</TD>
</TR>
<TR>
<TD>IMAPS</TD>
<TD>993</TD>
</TR>
<TR>
<TD>NNTP</TD>
<TD>119</TD>
</TR>
<TR>
<TD>NNTPS</TD>
<TD>563</TD>
</TR>
</TABLE>
&nbsp;
<P>&nbsp;
</BODY>
</HTML>