blob: c961d2da64dd765bf19b95953cfa51ebb8bc3b54 [file] [log] [blame]
Dr. Stephen Henson64287002000-01-22 23:34:44 +00001=pod
2
3=head1 NAME
4
5ciphers - SSL cipher display and cipher list tool.
6
7=head1 SYNOPSIS
8
9B<openssl> B<ciphers>
10[B<-v>]
11[B<-ssl2>]
12[B<-ssl3>]
13[B<-tls1>]
14[B<cipherlist>]
15
16=head1 DESCRIPTION
17
18The B<cipherlist> command converts OpenSSL cipher lists into ordered
19SSL cipher preference lists. It can be used as a test tool to determine
20the appropriate cipherlist.
21
22=head1 COMMAND OPTIONS
23
24=over 4
25
26=item B<-v>
27
28verbose option. List ciphers with a complete decsription of the authentication,
29key exchange, encryption and mac algorithms used along with any key size
30restrictions and whether the algorithm is classed as an "export" cipher.
31
32=item B<-ssl3>
33
34only include SSL v3 ciphers.
35
36=item B<-ssl2>
37
38only include SSL v2 ciphers.
39
40=item B<-tls1>
41
42only include TLS v1 ciphers.
43
44=item B<-h>, B<-?>
45
46print a brief usage message.
47
48=item B<cipherlist>
49
50a cipher list to convert to a cipher preference list. If it is not included
51then the default cipher list will be used. The format is described below.
52
53=head1 CIPHER LIST FORMAT
54
55The cipher list consists of one or more I<cipher strings> separated by colons.
56Commas or spaces are also acceptable separators but colons are normally used.
57
58The actual cipher string can take several different forms.
59
60It can consist of a single cipher suite such as B<RC4-SHA>.
61
62It can represent a list of cipher suites containing a certain algorithm, or
63cipher suites of a certain type. For example B<SHA1> represents all ciphers
64suites using the digest algorithm SHA1 and B<SSLv3> represents all SSL v3
65algorithms.
66
67Lists of cipher suites can be combined in a single cipher string using the
68B<+> character. This is used as a logical B<and> operation. For example
69B<SHA1+DES> represents all cipher suites containing the SHA1 B<and> the DES
70algorithms.
71
72Each cipher string can be optionally preceded by the characters B<!>,
73B<-> or B<+>.
74
75If B<!> is used then the ciphers are permanently deleted from the list.
76The ciphers deleted can never reappear in the list even if they are
77explicitly stated.
78
79If B<-> is used then the ciphers are deleted from the list, but some or
80all of the ciphers can be added again by later options.
81
82If B<+> is used then the ciphers are moved to the end of the list. This
83option doesn't add any new ciphers it just moves matching existing ones.
84
85If none of these characters is present then the string is just interpreted
86as a list of ciphers to be appended to the current preference list. If the
87list includes any ciphers already present they will be ignored: that is they
88will not moved to the end of the list.
89
90Additionally the cipher string B<@STRENGTH> can be used at any point to sort
91the current cipher list in order of encryption algorithm key length.
92
93=head1 CIPHER STRINGS
94
95The following is a list of all permitted cipher strings and their meanings.
96
97=over 4
98
99=item B<DEFAULT>
100
101the default cipher list. This is determined at compile time and is normally
102B<TBA>. This must be the first cipher string specified.
103
104=item B<ALL>
105
106all ciphers suites except the B<eNULL> ciphers which must be explicitly enabled.
107
108=item B<HIGH>
109
110"high" encryption cipher suites. This currently means those with key lengths larger
111than 128 bits.
112
113=item B<MEDIUM>
114
115"medium" encryption cipher suites, currently those using 128 bit encryption.
116
117=item B<LOW>
118
119"low" encryption cipher suites, currently those using 64 or 56 bit encryption algorithms
120but excluding export cipher suites.
121
122=item B<EXP>, B<EXPORT>
123
124export encryption algorithms. Including 40 and 56 bits algorithms.
125
126=item B<EXPORT40>
127
12840 bit export encryption algorithms
129
130=item B<EXPORT56>
131
13256 bit export encryption algorithms.
133
134=item B<eNULL>, B<NULL>
135
136the "NULL" ciphers that is those offering no encryption. Because these offer no
137encryption at all and are a security risk they are disabled unless explicitly
138included.
139
140=item B<aNULL>
141
142the cipher suites offering no authentication. This is currently the anonymous
143DH algorithms. These cipher suites are vulnerable to a "man in the middle"
144attack and so there use is normally discouraged.
145
146=item B<kRSA>, B<RSA>
147
148cipher suites using RSA key exchange.
149
150=item B<kEDH>
151
152cipher suites using ephemeral DH key agreement.
153
154=item B<kDHr>, B<kDHd>
155
156cipher suites using DH key agreement and DH certificates signed by CAs with RSA
157and DSS keys respectively. Not implemented.
158
159=item B<aRSA>
160
161cipher suites using RSA authentication, i.e. the certificates carry RSA keys.
162
163=item B<aDSS>, B<DSS>
164
165cipher suites using DSS authentication, i.e. the certificates carry DSS keys.
166
167=item B<aDH>
168
169cipher suites effectively using DH authentication, i.e. the certificates carry
170DH keys. Not implemented.
171
172=item B<kFZA>, B<aFZA>, B<eFZA>, B<FZA>
173
174ciphers suites using FORTEZZA key exchange, authentication, encryption or all
175FORTEZZA algorithms. Not implemented.
176
177=item B<TLSv1>, B<SSLv3>, B<SSLv2>
178
179TLS v1.0, SSL v3.0 or SSL v2.0 cipher suites respectively.
180
181=item B<DH>
182
183cipher suites using DH, including anonymous DH.
184
185=item B<ADH>
186
187anoymous DH cipher suites.
188
189=item B<3DES>
190
191cipher suites using triple DES.
192
193=item B<DES>
194
195cipher suites using DES (not triple DES).
196
197=item B<RC4>
198
199cipher suites using RC4.
200
201=item B<RC2>
202
203cipher suites using RC2.
204
205=item B<IDEA>
206
207cipher suites using IDEA.
208
209=item B<MD5>
210
211cipher suites using MD5.
212
213=item B<SHA1>, B<SHA>
214
215cipher suites using SHA1.
216
217=back
218
219=head1 CIPHER SUITE NAMES
220
221The following lists give the SSL or TLS cipher suites names from the
222relevant specification and their OpenSSL equivalents.
223
224=head2 SSL v3.0 cipher suites.
225
226 SSL_RSA_WITH_NULL_MD5 NULL-MD5
227 SSL_RSA_WITH_NULL_SHA NULL-SHA
228 SSL_RSA_EXPORT_WITH_RC4_40_MD5 EXP-RC4-MD5
229 SSL_RSA_WITH_RC4_128_MD5 RC4-MD5
230 SSL_RSA_WITH_RC4_128_SHA RC4-SHA
231 SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 EXP-RC2-CBC-MD5
232 SSL_RSA_WITH_IDEA_CBC_SHA IDEA-CBC-SHA
233 SSL_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-DES-CBC-SHA
234 SSL_RSA_WITH_DES_CBC_SHA DES-CBC-SHA
235 SSL_RSA_WITH_3DES_EDE_CBC_SHA DES-CBC3-SHA
236
237 SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA Not implemented.
238 SSL_DH_DSS_WITH_DES_CBC_SHA Not implemented.
239 SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA Not implemented.
240 SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA Not implemented.
241 SSL_DH_RSA_WITH_DES_CBC_SHA Not implemented.
242 SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA Not implemented.
243 SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-DSS-DES-CBC-SHA
244 SSL_DHE_DSS_WITH_DES_CBC_SHA EDH-DSS-CBC-SHA
245 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA EDH-DSS-DES-CBC3-SHA
246 SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-RSA-DES-CBC-SHA
247 SSL_DHE_RSA_WITH_DES_CBC_SHA EDH-RSA-DES-CBC-SHA
248 SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA EDH-RSA-DES-CBC3-SHA
249
250 SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 EXP-ADH-RC4-MD5
251 SSL_DH_anon_WITH_RC4_128_MD5 ADH-RC4-MD5
252 SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA EXP-ADH-DES-CBC-SHA
253 SSL_DH_anon_WITH_DES_CBC_SHA ADH-DES-CBC-SHA
254 SSL_DH_anon_WITH_3DES_EDE_CBC_SHA ADH-DES-CBC3-SHA
255
256 SSL_FORTEZZA_KEA_WITH_NULL_SHA Not implemented.
257 SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA Not implemented.
258 SSL_FORTEZZA_KEA_WITH_RC4_128_SHA Not implemented.
259
260=head2 TLS v1.0 cipher suites.
261
262 TLS_RSA_WITH_NULL_MD5 NULL-MD5
263 TLS_RSA_WITH_NULL_SHA NULL-SHA
264 TLS_RSA_EXPORT_WITH_RC4_40_MD5 EXP-RC4-MD5
265 TLS_RSA_WITH_RC4_128_MD5 RC4-MD5
266 TLS_RSA_WITH_RC4_128_SHA RC4-SHA
267 TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 EXP-RC2-CBC-MD5
268 TLS_RSA_WITH_IDEA_CBC_SHA IDEA-CBC-SHA
269 TLS_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-DES-CBC-SHA
270 TLS_RSA_WITH_DES_CBC_SHA DES-CBC-SHA
271 TLS_RSA_WITH_3DES_EDE_CBC_SHA DES-CBC3-SHA
272
273 TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA Not implemented.
274 TLS_DH_DSS_WITH_DES_CBC_SHA Not implemented.
275 TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA Not implemented.
276 TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA Not implemented.
277 TLS_DH_RSA_WITH_DES_CBC_SHA Not implemented.
278 TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA Not implemented.
279 TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-DSS-DES-CBC-SHA
280 TLS_DHE_DSS_WITH_DES_CBC_SHA EDH-DSS-CBC-SHA
281 TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA EDH-DSS-DES-CBC3-SHA
282 TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-RSA-DES-CBC-SHA
283 TLS_DHE_RSA_WITH_DES_CBC_SHA EDH-RSA-DES-CBC-SHA
284 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA EDH-RSA-DES-CBC3-SHA
285
286 TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 EXP-ADH-RC4-MD5
287 TLS_DH_anon_WITH_RC4_128_MD5 ADH-RC4-MD5
288 TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA EXP-ADH-DES-CBC-SHA
289 TLS_DH_anon_WITH_DES_CBC_SHA ADH-DES-CBC-SHA
290 TLS_DH_anon_WITH_3DES_EDE_CBC_SHA ADH-DES-CBC3-SHA
291
292=head2 Additional Export 1024 and other cipher suites
293
294Note: these ciphers can also be used in SSL v3.
295
296 TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA EXP1024-DES-CBC-SHA
297 TLS_RSA_EXPORT1024_WITH_RC4_56_SHA EXP1024-RC4-SHA
298 TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA EXP1024-DHE-DSS-DES-CBC-SHA
299 TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA EXP1024-DHE-DSS-RC4-SHA
300 TLS_DHE_DSS_WITH_RC4_128_SHA DHE-DSS-RC4-SHA
301
302=head2 SSL v2.0 cipher suites.
303
304 SSL_CK_RC4_128_WITH_MD5 RC4-MD5
305 SSL_CK_RC4_128_EXPORT40_WITH_MD5 EXP-RC4-MD5
306 SSL_CK_RC2_128_CBC_WITH_MD5 RC2-MD5
307 SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 EXP-RC2-MD5
308 SSL_CK_IDEA_128_CBC_WITH_MD5 IDEA-CBC-MD5
309 SSL_CK_DES_64_CBC_WITH_MD5 DES-CBC-MD5
310 SSL_CK_DES_192_EDE3_CBC_WITH_MD5 DES-CBC3-MD5
311
312=head1 NOTES
313
314The non ephemeral DH modes are currently unimplimented in OpenSSL
315because there is no support for DH certificates.
316
317Some compiled versions of OpenSSL may not include all the ciphers
318listed here because some ciphers were excluded at compile time.
319
320=head1 EXAMPLES
321
322Verbose listing of all OpenSSL ciphers including NULL ciphers:
323
324 openssl ciphers -v 'ALL:eNULL'
325
326Include all ciphers except NULL and anonymous DH then sort by
327strength:
328
329 openssl ciphers -v 'ALL:!ADH:@STRENGTH'
330
331Include only 3DES ciphers and then place RSA ciphers last:
332
333 openssl ciphers -v '3DES:+RSA'
334
335=head1 SEE ALSO
336
337s_client(1), s_server(1), ssl(3)
338
339=cut