'\" t
.\"     Title: SSLTAP
.\"    Author: [see the "Authors" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 19 May 2021
.\"    Manual: NSS Security Tools
.\"    Source: nss-tools
.\"  Language: English
.\"
.TH "SSLTAP" "1" "19 May 2021" "nss-tools" "NSS Security Tools"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
ssltap \- Tap into SSL connections and display the data going by
.SH "SYNOPSIS"
.HP \w'\fBssltap\fR\ 'u
\fBssltap\fR [\-fhlsvx] [\-p\ port] [hostname:port]
.SH "STATUS"
.PP
This documentation is still work in progress\&. Please contribute to the initial review in
\m[blue]\fBMozilla NSS bug 836477\fR\m[]\&\s-2\u[1]\d\s+2
.SH "DESCRIPTION"
.PP
The SSL Debugging Tool
\fBssltap\fR
is an SSL\-aware command\-line proxy\&. It watches TCP connections and displays the data going by\&. If a connection is SSL, the data display includes interpreted SSL records and handshaking
.SH "OPTIONS"
.PP
\-f
.RS 4
Turn on fancy printing\&. Output is printed in colored HTML\&. Data sent from the client to the server is in blue; the server\*(Aqs reply is in red\&. When used with looping mode, the different connections are separated with horizontal lines\&. You can use this option to upload the output into a browser\&.
.RE
.PP
\-h
.RS 4
Turn on hex/ASCII printing\&. Instead of outputting raw data, the command interprets each record as a numbered line of hex values, followed by the same data as ASCII characters\&. The two parts are separated by a vertical bar\&. Nonprinting characters are replaced by dots\&.
.RE
.PP
\-l prefix
.RS 4
Turn on looping; that is, continue to accept connections rather than stopping after the first connection is complete\&.
.RE
.PP
\-p port
.RS 4
Change the default rendezvous port (1924) to another port\&.
.sp
The following are well\-known port numbers:
.sp
* HTTP 80
.sp
* HTTPS 443
.sp
* SMTP 25
.sp
* FTP 21
.sp
* IMAP 143
.sp
* IMAPS 993 (IMAP over SSL)
.sp
* NNTP 119
.sp
* NNTPS 563 (NNTP over SSL)
.RE
.PP
\-s
.RS 4
Turn on SSL parsing and decoding\&. The tool does not automatically detect SSL sessions\&. If you are intercepting an SSL connection, use this option so that the tool can detect and decode SSL structures\&.
.sp
If the tool detects a certificate chain, it saves the DER\-encoded certificates into files in the current directory\&. The files are named cert\&.0x, where x is the sequence number of the certificate\&.
.sp
If the \-s option is used with \-h, two separate parts are printed for each record: the plain hex/ASCII output, and the parsed SSL output\&.
.RE
.PP
\-v
.RS 4
Print a version string for the tool\&.
.RE
.PP
\-x
.RS 4
Turn on extra SSL hex dumps\&.
.RE
.SH "USAGE AND EXAMPLES"
.PP
You can use the SSL Debugging Tool to intercept any connection information\&. Although you can run the tool at its most basic by issuing the ssltap command with no options other than hostname:port, the information you get in this way is not very useful\&. For example, assume your development machine is called intercept\&. The simplest way to use the debugging tool is to execute the following command from a command shell:
.sp
.if n \{\
.RS 4
.\}
.nf
$ ssltap www\&.netscape\&.com
.fi
.if n \{\
.RE
.\}
.PP
The program waits for an incoming connection on the default port 1924\&. In your browser window, enter the URL http://intercept:1924\&. The browser retrieves the requested page from the server at www\&.netscape\&.com, but the page is intercepted and passed on to the browser by the debugging tool on intercept\&. On its way to the browser, the data is printed to the command shell from which you issued the command\&. Data sent from the client to the server is surrounded by the following symbols: \-\-> [ data ] Data sent from the server to the client is surrounded by the following symbols: "left arrow"\-\- [ data ] The raw data stream is sent to standard output and is not interpreted in any way\&. This can result in peculiar effects, such as sounds, flashes, and even crashes of the command shell window\&. To output a basic, printable interpretation of the data, use the \-h option, or, if you are looking at an SSL connection, the \-s option\&. You will notice that the page you retrieved looks incomplete in the browser\&. This is because, by default, the tool closes down after the first connection is complete, so the browser is not able to load images\&. To make the tool continue to accept connections, switch on looping mode with the \-l option\&. The following examples show the output from commonly used combinations of options\&.
.PP
Example 1
.sp
.if n \{\
.RS 4
.\}
.nf
$ ssltap\&.exe \-sx \-p 444 interzone\&.mcom\&.com:443 > sx\&.txt
.fi
.if n \{\
.RE
.\}
.PP
Output
.sp
.if n \{\
.RS 4
.\}
.nf
Connected to interzone\&.mcom\&.com:443
\-\->; [
alloclen = 66 bytes
   [ssl2]  ClientHelloV2 {
            version = {0x03, 0x00}
            cipher\-specs\-length = 39 (0x27)
            sid\-length = 0 (0x00)
            challenge\-length = 16 (0x10)
            cipher\-suites = {

                (0x010080) SSL2/RSA/RC4\-128/MD5
                  (0x020080) SSL2/RSA/RC4\-40/MD5
                  (0x030080) SSL2/RSA/RC2CBC128/MD5
                  (0x040080) SSL2/RSA/RC2CBC40/MD5
                  (0x060040) SSL2/RSA/DES64CBC/MD5
                  (0x0700c0) SSL2/RSA/3DES192EDE\-CBC/MD5
                  (0x000004) SSL3/RSA/RC4\-128/MD5
                  (0x00ffe0) SSL3/RSA\-FIPS/3DES192EDE\-CBC/SHA
                  (0x00000a) SSL3/RSA/3DES192EDE\-CBC/SHA
                  (0x00ffe1) SSL3/RSA\-FIPS/DES64CBC/SHA
                  (0x000009) SSL3/RSA/DES64CBC/SHA
                  (0x000003) SSL3/RSA/RC4\-40/MD5
                  (0x000006) SSL3/RSA/RC2CBC40/MD5
                  }
            session\-id = { }
            challenge = { 0xec5d 0x8edb 0x37c9 0xb5c9 0x7b70 0x8fe9 0xd1d3

0x2592 }
}
]
<\-\- [
SSLRecord {
   0: 16 03 00 03  e5                                   |\&.\&.\&.\&.\&.
   type    = 22 (handshake)
   version = { 3,0 }
   length  = 997 (0x3e5)
   handshake {
   0: 02 00 00 46                                      |\&.\&.\&.F
      type = 2 (server_hello)
      length = 70 (0x000046)
            ServerHello {
            server_version = {3, 0}
            random = {\&.\&.\&.}
   0: 77 8c 6e 26  6c 0c ec c0  d9 58 4f 47  d3 2d 01 45  |
wn&l\&.\(`i\&.\&.XOG\&.\-\&.E
   10: 5c 17 75 43  a7 4c 88 c7  88 64 3c 50  41 48 4f 7f  |

\e\&.uC\(scL\&.\(,C\&.d<PAHO\&.
                  session ID = {
                  length = 32

                contents = {\&.\&.}
   0: 14 11 07 a8  2a 31 91 29  11 94 40 37  57 10 a7 32  | \&.\&.\&.\(ad*1\&.)\&.\&.@7W\&.\(sc2
   10: 56 6f 52 62  fe 3d b3 65  b1 e4 13 0f  52 a3 c8 f6  | VoRb\(Tp=\(S3e\(+-\&.\&.\&.R\(Po\(`E\&.
         }
               cipher_suite = (0x0003) SSL3/RSA/RC4\-40/MD5
         }
   0: 0b 00 02 c5                                      |\&.\&.\&.\(oA
      type = 11 (certificate)
      length = 709 (0x0002c5)
            CertificateChain {
            chainlength = 706 (0x02c2)
               Certificate {
            size = 703 (0x02bf)
               data = { saved in file \*(Aqcert\&.001\*(Aq }
            }
         }
   0: 0c 00 00 ca                                      |\&.\&.\&.\&.
         type = 12 (server_key_exchange)
         length = 202 (0x0000ca)
   0: 0e 00 00 00                                      |\&.\&.\&.\&.
         type = 14 (server_hello_done)
         length = 0 (0x000000)
   }
}
]
\-\-> [
SSLRecord {
   0: 16 03 00 00  44                                   |\&.\&.\&.\&.D
   type    = 22 (handshake)
   version = { 3,0 }
   length  = 68 (0x44)
   handshake {
   0: 10 00 00 40                                      |\&.\&.\&.@
   type = 16 (client_key_exchange)
   length = 64 (0x000040)
         ClientKeyExchange {
            message = {\&.\&.\&.}
         }
   }
}
]
\-\-> [
SSLRecord {
   0: 14 03 00 00  01                                   |\&.\&.\&.\&.\&.
   type    = 20 (change_cipher_spec)
   version = { 3,0 }
   length  = 1 (0x1)
   0: 01                                               |\&.
}
SSLRecord {
   0: 16 03 00 00  38                                   |\&.\&.\&.\&.8
   type    = 22 (handshake)
   version = { 3,0 }
   length  = 56 (0x38)
               < encrypted >

}
]
<\-\- [
SSLRecord {
   0: 14 03 00 00  01                                   |\&.\&.\&.\&.\&.
   type    = 20 (change_cipher_spec)
   version = { 3,0 }
   length  = 1 (0x1)
   0: 01                                               |\&.
}
]
<\-\- [
SSLRecord {
   0: 16 03 00 00  38                                   |\&.\&.\&.\&.8
   type    = 22 (handshake)
   version = { 3,0 }
   length  = 56 (0x38)
                  < encrypted >

}
]
\-\-> [
SSLRecord {
   0: 17 03 00 01  1f                                   |\&.\&.\&.\&.\&.
   type    = 23 (application_data)
   version = { 3,0 }
   length  = 287 (0x11f)
               < encrypted >
}
]
<\-\- [
SSLRecord {
   0: 17 03 00 00  a0                                   |\&.\&.\&.\&.
   type    = 23 (application_data)
   version = { 3,0 }
   length  = 160 (0xa0)
               < encrypted >

}
]
<\-\- [
SSLRecord {
0: 17 03 00 00  df                                   |\&.\&.\&.\&.\(ss
   type    = 23 (application_data)
   version = { 3,0 }
   length  = 223 (0xdf)
               < encrypted >

}
SSLRecord {
   0: 15 03 00 00  12                                   |\&.\&.\&.\&.\&.
   type    = 21 (alert)
   version = { 3,0 }
   length  = 18 (0x12)
               < encrypted >
}
]
Server socket closed\&.
.fi
.if n \{\
.RE
.\}
.PP
Example 2
.PP
The \-s option turns on SSL parsing\&. Because the \-x option is not used in this example, undecoded values are output as raw data\&. The output is routed to a text file\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ ssltap \-s  \-p 444 interzone\&.mcom\&.com:443 > s\&.txt
.fi
.if n \{\
.RE
.\}
.PP
Output
.sp
.if n \{\
.RS 4
.\}
.nf
Connected to interzone\&.mcom\&.com:443
\-\-> [
alloclen = 63 bytes
   [ssl2]  ClientHelloV2 {
            version = {0x03, 0x00}
            cipher\-specs\-length = 36 (0x24)
            sid\-length = 0 (0x00)
            challenge\-length = 16 (0x10)
            cipher\-suites = {
                  (0x010080) SSL2/RSA/RC4\-128/MD5
                  (0x020080) SSL2/RSA/RC4\-40/MD5
                  (0x030080) SSL2/RSA/RC2CBC128/MD5
                  (0x060040) SSL2/RSA/DES64CBC/MD5
                  (0x0700c0) SSL2/RSA/3DES192EDE\-CBC/MD5
                  (0x000004) SSL3/RSA/RC4\-128/MD5
                  (0x00ffe0) SSL3/RSA\-FIPS/3DES192EDE\-CBC/SHA
                  (0x00000a) SSL3/RSA/3DES192EDE\-CBC/SHA
                  (0x00ffe1) SSL3/RSA\-FIPS/DES64CBC/SHA
                  (0x000009) SSL3/RSA/DES64CBC/SHA
                  (0x000003) SSL3/RSA/RC4\-40/MD5
                  }
               session\-id = { }
            challenge = { 0x713c 0x9338 0x30e1 0xf8d6 0xb934 0x7351 0x200c
0x3fd0 }
]
>\-\- [
SSLRecord {
   type    = 22 (handshake)
   version = { 3,0 }
   length  = 997 (0x3e5)
   handshake {
         type = 2 (server_hello)
         length = 70 (0x000046)
            ServerHello {
            server_version = {3, 0}
            random = {\&.\&.\&.}
            session ID = {
               length = 32
               contents = {\&.\&.}
               }
               cipher_suite = (0x0003) SSL3/RSA/RC4\-40/MD5
            }
         type = 11 (certificate)
         length = 709 (0x0002c5)
            CertificateChain {
               chainlength = 706 (0x02c2)
               Certificate {
                  size = 703 (0x02bf)
                  data = { saved in file \*(Aqcert\&.001\*(Aq }
               }
            }
         type = 12 (server_key_exchange)
         length = 202 (0x0000ca)
         type = 14 (server_hello_done)
         length = 0 (0x000000)
   }
}
]
\-\-> [
SSLRecord {
   type    = 22 (handshake)
   version = { 3,0 }
   length  = 68 (0x44)
   handshake {
         type = 16 (client_key_exchange)
         length = 64 (0x000040)
            ClientKeyExchange {
               message = {\&.\&.\&.}
            }
   }
}
]
\-\-> [
SSLRecord {
   type    = 20 (change_cipher_spec)
   version = { 3,0 }
   length  = 1 (0x1)
}
SSLRecord {
   type    = 22 (handshake)
   version = { 3,0 }
   length  = 56 (0x38)
               > encrypted >
}
]
>\-\- [
SSLRecord {
   type    = 20 (change_cipher_spec)
   version = { 3,0 }
   length  = 1 (0x1)
}
]
>\-\- [
SSLRecord {
   type    = 22 (handshake)
   version = { 3,0 }
   length  = 56 (0x38)
               > encrypted >
}
]
\-\-> [
SSLRecord {
   type    = 23 (application_data)
   version = { 3,0 }
   length  = 287 (0x11f)
               > encrypted >
}
]
[
SSLRecord {
   type    = 23 (application_data)
   version = { 3,0 }
   length  = 160 (0xa0)
               > encrypted >
}
]
>\-\- [
SSLRecord {
   type    = 23 (application_data)
   version = { 3,0 }
   length  = 223 (0xdf)
               > encrypted >
}
SSLRecord {
   type    = 21 (alert)
   version = { 3,0 }
   length  = 18 (0x12)
               > encrypted >
}
]
Server socket closed\&.
.fi
.if n \{\
.RE
.\}
.PP
Example 3
.PP
In this example, the \-h option turns hex/ASCII format\&. There is no SSL parsing or decoding\&. The output is routed to a text file\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ ssltap \-h  \-p 444 interzone\&.mcom\&.com:443 > h\&.txt
.fi
.if n \{\
.RE
.\}
.PP
Output
.sp
.if n \{\
.RS 4
.\}
.nf
Connected to interzone\&.mcom\&.com:443
\-\-> [
   0: 80 40 01 03  00 00 27 00  00 00 10 01  00 80 02 00  | \&.@\&.\&.\&.\&.\*(Aq\&.\&.\&.\&.\&.\&.\&.\&.\&.
   10: 80 03 00 80  04 00 80 06  00 40 07 00  c0 00 00 04  | \&.\&.\&.\&.\&.\&.\&.\&.\&.@\&.\&.\&.\&.\&.\&.
   20: 00 ff e0 00  00 0a 00 ff  e1 00 00 09  00 00 03 00  | \&.\&.\&.\&.\&.\&.\&.\&.\('a\&.\&.\&.\&.\&.\&.\&.
   30: 00 06 9b fe  5b 56 96 49  1f 9f ca dd  d5 ba b9 52  | \&.\&.\(Tp[V\&.I\&.\exd9 \&.\&.\&.\(Om\(S1R
   40: 6f 2d                                            |o\-
]
<\-\- [
   0: 16 03 00 03  e5 02 00 00  46 03 00 7f  e5 0d 1b 1d  | \&.\&.\&.\&.\&.\&.\&.\&.F\&.\&.\&.\&.\&.\&.\&.
   10: 68 7f 3a 79  60 d5 17 3c  1d 9c 96 b3  88 d2 69 3b  | h\&.:y`\&.\&.<\&.\&.\(S3\&.\(`Oi;
   20: 78 e2 4b 8b  a6 52 12 4b  46 e8 c2 20  14 11 89 05  | x\&.K\&.\(bbR\&.KF\(`e\&. \&.\&.\&.
   30: 4d 52 91 fd  93 e0 51 48  91 90 08 96  c1 b6 76 77  | MR\&.\('y\&.\&.QH\&.\&.\&.\&.\&.\(psvw
   40: 2a f4 00 08  a1 06 61 a2  64 1f 2e 9b  00 03 00 0b  | *\(^o\&.\&.\(r!\&.a\(ctd\&.\&.\&.\&.\&.\&.
   50: 00 02 c5 00  02 c2 00 02  bf 30 82 02  bb 30 82 02  | \&.\&.\(oA\&.\&.\&.\&.\&.\&.0\&.\&.\&.0\&.\&.
   60: 24 a0 03 02  01 02 02 02  01 36 30 0d  06 09 2a 86  | $ \&.\&.\&.\&.\&.\&.\&.60\&.\&.\&.*\&.
   70: 48 86 f7 0d  01 01 04 05  00 30 77 31  0b 30 09 06  | H\&.\(di\&.\&.\&.\&.\&.\&.0w1\&.0\&.\&.
   80: 03 55 04 06  13 02 55 53  31 2c 30 2a  06 03 55 04  | \&.U\&.\&.\&.\&.US1,0*\&.\&.U\&.
   90: 0a 13 23 4e  65 74 73 63  61 70 65 20  43 6f 6d 6d  | \&.\&.#Netscape Comm
   a0: 75 6e 69 63  61 74 69 6f  6e 73 20 43  6f 72 70 6f  | unications Corpo
   b0: 72 61 74 69  6f 6e 31 11  30 0f 06 03  55 04 0b 13  | ration1\&.0\&.\&.\&.U\&.\&.\&.
   c0: 08 48 61 72  64 63 6f 72  65 31 27 30  25 06 03 55  | \&.Hardcore1\*(Aq0%\&.\&.U
   d0: 04 03 13 1e  48 61 72 64  63 6f 72 65  20 43 65 72  | \&.\&.\&.\&.Hardcore Cer
   e0: 74 69 66 69  63 61 74 65  20 53 65 72  76 65 72 20  | tificate Server
   f0: 49 49 30 1e  17 0d 39 38  30 35 31 36  30 31 30 33  | II0\&.\&.\&.9805160103
<additional data lines>
]
<additional records in same format>
Server socket closed\&.
.fi
.if n \{\
.RE
.\}
.PP
Example 4
.PP
In this example, the \-s option turns on SSL parsing, and the \-h option turns on hex/ASCII format\&. Both formats are shown for each record\&. The output is routed to a text file\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ ssltap \-hs \-p 444 interzone\&.mcom\&.com:443 > hs\&.txt
.fi
.if n \{\
.RE
.\}
.PP
Output
.sp
.if n \{\
.RS 4
.\}
.nf
Connected to interzone\&.mcom\&.com:443
\-\-> [
   0: 80 3d 01 03  00 00 24 00  00 00 10 01  00 80 02 00  | \&.=\&.\&.\&.\&.$\&.\&.\&.\&.\&.\&.\&.\&.\&.
   10: 80 03 00 80  04 00 80 06  00 40 07 00  c0 00 00 04  | \&.\&.\&.\&.\&.\&.\&.\&.\&.@\&.\&.\&.\&.\&.\&.
   20: 00 ff e0 00  00 0a 00 ff  e1 00 00 09  00 00 03 03  | \&.\&.\&.\&.\&.\&.\&.\&.\('a\&.\&.\&.\&.\&.\&.\&.
   30: 55 e6 e4 99  79 c7 d7 2c  86 78 96 5d  b5 cf e9     |U\&.\&.y\(,C\exb0 ,\&.x\&.]\(mc\(:I\('e
alloclen = 63 bytes
   [ssl2]  ClientHelloV2 {
            version = {0x03, 0x00}
            cipher\-specs\-length = 36 (0x24)
            sid\-length = 0 (0x00)
            challenge\-length = 16 (0x10)
            cipher\-suites = {
                  (0x010080) SSL2/RSA/RC4\-128/MD5
                  (0x020080) SSL2/RSA/RC4\-40/MD5
                  (0x030080) SSL2/RSA/RC2CBC128/MD5
                  (0x040080) SSL2/RSA/RC2CBC40/MD5
                  (0x060040) SSL2/RSA/DES64CBC/MD5
                  (0x0700c0) SSL2/RSA/3DES192EDE\-CBC/MD5
                  (0x000004) SSL3/RSA/RC4\-128/MD5
                  (0x00ffe0) SSL3/RSA\-FIPS/3DES192EDE\-CBC/SHA
                  (0x00000a) SSL3/RSA/3DES192EDE\-CBC/SHA
                  (0x00ffe1) SSL3/RSA\-FIPS/DES64CBC/SHA
                  (0x000009) SSL3/RSA/DES64CBC/SHA
                  (0x000003) SSL3/RSA/RC4\-40/MD5
                  }
            session\-id = { }
            challenge = { 0x0355 0xe6e4 0x9979 0xc7d7 0x2c86 0x7896 0x5db

0xcfe9 }
}
]
<additional records in same formats>
Server socket closed\&.
.fi
.if n \{\
.RE
.\}
.SH "USAGE TIPS"
.PP
When SSL restarts a previous session, it makes use of cached information to do a partial handshake\&. If you wish to capture a full SSL handshake, restart the browser to clear the session id cache\&.
.PP
If you run the tool on a machine other than the SSL server to which you are trying to connect, the browser will complain that the host name you are trying to connect to is different from the certificate\&. If you are using the default BadCert callback, you can still connect through a dialog\&. If you are not using the default BadCert callback, the one you supply must allow for this possibility\&.
.SH "SEE ALSO"
.PP
The NSS Security Tools are also documented at
\m[blue]\fBhttp://www\&.mozilla\&.org/projects/security/pki/nss/\fR\m[]\&\s-2\u[2]\d\s+2\&.
.SH "ADDITIONAL RESOURCES"
.PP
For information about NSS and other tools related to NSS (like JSS), check out the NSS project wiki at
\m[blue]\fBhttp://www\&.mozilla\&.org/projects/security/pki/nss/\fR\m[]\&. The NSS site relates directly to NSS code changes and releases\&.
.PP
Mailing lists: https://lists\&.mozilla\&.org/listinfo/dev\-tech\-crypto
.PP
IRC: Freenode at #dogtag\-pki
.SH "AUTHORS"
.PP
The NSS tools were written and maintained by developers with Netscape, Red Hat, Sun, Oracle, Mozilla, and Google\&.
.PP
Authors: Elio Maldonado <emaldona@redhat\&.com>, Deon Lackey <dlackey@redhat\&.com>\&.
.SH "LICENSE"
.PP
Licensed under the Mozilla Public License, v\&. 2\&.0\&. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla\&.org/MPL/2\&.0/\&.
.SH "NOTES"
.IP " 1." 4
Mozilla NSS bug 836477
.RS 4
\%https://bugzilla.mozilla.org/show_bug.cgi?id=836477
.RE
.IP " 2." 4
http://www.mozilla.org/projects/security/pki/nss/
.RS 4
\%http://www.mozilla.org/projects/security/pki/nss/tools
.RE
