Merge from vendor branch OPENSSH:
[dragonfly.git] / secure / usr.bin / openssl / man / s_time.1
1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sh \" Subsection heading
6 .br
7 .if t .Sp
8 .ne 5
9 .PP
10 \fB\\$1\fR
11 .PP
12 ..
13 .de Sp \" Vertical space (when we can't use .PP)
14 .if t .sp .5v
15 .if n .sp
16 ..
17 .de Vb \" Begin verbatim text
18 .ft CW
19 .nf
20 .ne \\$1
21 ..
22 .de Ve \" End verbatim text
23 .ft R
24 .fi
25 ..
26 .\" Set up some character translations and predefined strings.  \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote.  | will give a
29 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
30 .\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
31 .\" expand to `' in nroff, nothing in troff, for use with C<>.
32 .tr \(*W-|\(bv\*(Tr
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34 .ie n \{\
35 .    ds -- \(*W-
36 .    ds PI pi
37 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
39 .    ds L" ""
40 .    ds R" ""
41 .    ds C` ""
42 .    ds C' ""
43 'br\}
44 .el\{\
45 .    ds -- \|\(em\|
46 .    ds PI \(*p
47 .    ds L" ``
48 .    ds R" ''
49 'br\}
50 .\"
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53 .\" entries marked with X<> in POD.  Of course, you'll have to process the
54 .\" output yourself in some meaningful fashion.
55 .if \nF \{\
56 .    de IX
57 .    tm Index:\\$1\t\\n%\t"\\$2"
58 ..
59 .    nr % 0
60 .    rr F
61 .\}
62 .\"
63 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
64 .\" way too many mistakes in technical documents.
65 .hy 0
66 .if n .na
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "S_TIME 1"
132 .TH S_TIME 1 "2007-03-28" "0.9.8e" "OpenSSL"
133 .SH "NAME"
134 s_time \- SSL/TLS performance timing program
135 .SH "SYNOPSIS"
136 .IX Header "SYNOPSIS"
137 \&\fBopenssl\fR \fBs_time\fR
138 [\fB\-connect host:port\fR]
139 [\fB\-www page\fR]
140 [\fB\-cert filename\fR]
141 [\fB\-key filename\fR]
142 [\fB\-CApath directory\fR]
143 [\fB\-CAfile filename\fR]
144 [\fB\-reuse\fR]
145 [\fB\-new\fR]
146 [\fB\-verify depth\fR]
147 [\fB\-nbio\fR]
148 [\fB\-time seconds\fR]
149 [\fB\-ssl2\fR]
150 [\fB\-ssl3\fR]
151 [\fB\-bugs\fR]
152 [\fB\-cipher cipherlist\fR]
153 .SH "DESCRIPTION"
154 .IX Header "DESCRIPTION"
155 The \fBs_client\fR command implements a generic \s-1SSL/TLS\s0 client which connects to a
156 remote host using \s-1SSL/TLS\s0. It can request a page from the server and includes
157 the time to transfer the payload data in its timing measurements. It measures
158 the number of connections within a given timeframe, the amount of data
159 transferred (if any), and calculates the average time spent for one connection.
160 .SH "OPTIONS"
161 .IX Header "OPTIONS"
162 .IP "\fB\-connect host:port\fR" 4
163 .IX Item "-connect host:port"
164 This specifies the host and optional port to connect to.
165 .IP "\fB\-www page\fR" 4
166 .IX Item "-www page"
167 This specifies the page to \s-1GET\s0 from the server. A value of '/' gets the
168 index.htm[l] page. If this parameter is not specified, then \fBs_time\fR will only
169 perform the handshake to establish \s-1SSL\s0 connections but not transfer any
170 payload data.
171 .IP "\fB\-cert certname\fR" 4
172 .IX Item "-cert certname"
173 The certificate to use, if one is requested by the server. The default is
174 not to use a certificate. The file is in \s-1PEM\s0 format.
175 .IP "\fB\-key keyfile\fR" 4
176 .IX Item "-key keyfile"
177 The private key to use. If not specified then the certificate file will
178 be used. The file is in \s-1PEM\s0 format.
179 .IP "\fB\-verify depth\fR" 4
180 .IX Item "-verify depth"
181 The verify depth to use. This specifies the maximum length of the
182 server certificate chain and turns on server certificate verification.
183 Currently the verify operation continues after errors so all the problems
184 with a certificate chain can be seen. As a side effect the connection
185 will never fail due to a server certificate verify failure.
186 .IP "\fB\-CApath directory\fR" 4
187 .IX Item "-CApath directory"
188 The directory to use for server certificate verification. This directory
189 must be in \*(L"hash format\*(R", see \fBverify\fR for more information. These are
190 also used when building the client certificate chain.
191 .IP "\fB\-CAfile file\fR" 4
192 .IX Item "-CAfile file"
193 A file containing trusted certificates to use during server authentication
194 and to use when attempting to build the client certificate chain.
195 .IP "\fB\-new\fR" 4
196 .IX Item "-new"
197 performs the timing test using a new session \s-1ID\s0 for each connection.
198 If neither \fB\-new\fR nor \fB\-reuse\fR are specified, they are both on by default
199 and executed in sequence.
200 .IP "\fB\-reuse\fR" 4
201 .IX Item "-reuse"
202 performs the timing test using the same session \s-1ID\s0; this can be used as a test
203 that session caching is working. If neither \fB\-new\fR nor \fB\-reuse\fR are
204 specified, they are both on by default and executed in sequence.
205 .IP "\fB\-nbio\fR" 4
206 .IX Item "-nbio"
207 turns on non-blocking I/O.
208 .IP "\fB\-ssl2\fR, \fB\-ssl3\fR" 4
209 .IX Item "-ssl2, -ssl3"
210 these options disable the use of certain \s-1SSL\s0 or \s-1TLS\s0 protocols. By default
211 the initial handshake uses a method which should be compatible with all
212 servers and permit them to use \s-1SSL\s0 v3, \s-1SSL\s0 v2 or \s-1TLS\s0 as appropriate.
213 The timing program is not as rich in options to turn protocols on and off as
214 the \fIs_client\fR\|(1) program and may not connect to all servers.
215 .Sp
216 Unfortunately there are a lot of ancient and broken servers in use which
217 cannot handle this technique and will fail to connect. Some servers only
218 work if \s-1TLS\s0 is turned off with the \fB\-ssl3\fR option; others
219 will only support \s-1SSL\s0 v2 and may need the \fB\-ssl2\fR option.
220 .IP "\fB\-bugs\fR" 4
221 .IX Item "-bugs"
222 there are several known bug in \s-1SSL\s0 and \s-1TLS\s0 implementations. Adding this
223 option enables various workarounds.
224 .IP "\fB\-cipher cipherlist\fR" 4
225 .IX Item "-cipher cipherlist"
226 this allows the cipher list sent by the client to be modified. Although
227 the server determines which cipher suite is used it should take the first
228 supported cipher in the list sent by the client.
229 See the \fIciphers\fR\|(1) command for more information.
230 .IP "\fB\-time length\fR" 4
231 .IX Item "-time length"
232 specifies how long (in seconds) \fBs_time\fR should establish connections and
233 optionally transfer payload data from a server. Server and client performance
234 and the link speed determine how many connections \fBs_time\fR can establish.
235 .SH "NOTES"
236 .IX Header "NOTES"
237 \&\fBs_client\fR can be used to measure the performance of an \s-1SSL\s0 connection.
238 To connect to an \s-1SSL\s0 \s-1HTTP\s0 server and get the default page the command
239 .PP
240 .Vb 1
241 \& openssl s_time -connect servername:443 -www / -CApath yourdir -CAfile yourfile.pem -cipher commoncipher [-ssl3]
242 .Ve
243 .PP
244 would typically be used (https uses port 443). 'commoncipher' is a cipher to
245 which both client and server can agree, see the \fIciphers\fR\|(1) command
246 for details.
247 .PP
248 If the handshake fails then there are several possible causes, if it is
249 nothing obvious like no client certificate then the \fB\-bugs\fR, \fB\-ssl2\fR,
250 \&\fB\-ssl3\fR options can be tried
251 in case it is a buggy server. In particular you should play with these
252 options \fBbefore\fR submitting a bug report to an OpenSSL mailing list.
253 .PP
254 A frequent problem when attempting to get client certificates working
255 is that a web client complains it has no certificates or gives an empty
256 list to choose from. This is normally because the server is not sending
257 the clients certificate authority in its \*(L"acceptable \s-1CA\s0 list\*(R" when it
258 requests a certificate. By using \fIs_client\fR\|(1) the \s-1CA\s0 list can be
259 viewed and checked. However some servers only request client authentication
260 after a specific \s-1URL\s0 is requested. To obtain the list in this case it
261 is necessary to use the \fB\-prexit\fR option of \fIs_client\fR\|(1) and
262 send an \s-1HTTP\s0 request for an appropriate page.
263 .PP
264 If a certificate is specified on the command line using the \fB\-cert\fR
265 option it will not be used unless the server specifically requests
266 a client certificate. Therefor merely including a client certificate
267 on the command line is no guarantee that the certificate works.
268 .SH "BUGS"
269 .IX Header "BUGS"
270 Because this program does not have all the options of the
271 \&\fIs_client\fR\|(1) program to turn protocols on and off, you may not be
272 able to measure the performance of all protocols with all servers.
273 .PP
274 The \fB\-verify\fR option should really exit if the server verification
275 fails.
276 .SH "SEE ALSO"
277 .IX Header "SEE ALSO"
278 \&\fIs_client\fR\|(1), \fIs_server\fR\|(1), \fIciphers\fR\|(1)