Minor patch: check only match @STRENGTH and remove eNULL
[openssl.git] / doc / apps / ciphers.pod
1 =pod
2
3 =head1 NAME
4
5 ciphers - SSL cipher display and cipher list tool.
6
7 =head1 SYNOPSIS
8
9 B<openssl> B<ciphers>
10 [B<-v>]
11 [B<-ssl2>]
12 [B<-ssl3>]
13 [B<-tls1>]
14 [B<cipherlist>]
15
16 =head1 DESCRIPTION
17
18 The B<cipherlist> command converts OpenSSL cipher lists into ordered
19 SSL cipher preference lists. It can be used as a test tool to determine
20 the appropriate cipherlist.
21
22 =head1 COMMAND OPTIONS
23
24 =over 4
25
26 =item B<-v>
27
28 verbose option. List ciphers with a complete decsription of the authentication,
29 key exchange, encryption and mac algorithms used along with any key size
30 restrictions and whether the algorithm is classed as an "export" cipher.
31
32 =item B<-ssl3>
33
34 only include SSL v3 ciphers.
35
36 =item B<-ssl2>
37
38 only include SSL v2 ciphers.
39
40 =item B<-tls1>
41
42 only include TLS v1 ciphers.
43
44 =item B<-h>, B<-?>
45
46 print a brief usage message.
47
48 =item B<cipherlist>
49
50 a cipher list to convert to a cipher preference list. If it is not included
51 then the default cipher list will be used. The format is described below.
52
53 =head1 CIPHER LIST FORMAT
54
55 The cipher list consists of one or more I<cipher strings> separated by colons.
56 Commas or spaces are also acceptable separators but colons are normally used.
57
58 The actual cipher string can take several different forms.
59
60 It can consist of a single cipher suite such as B<RC4-SHA>.
61
62 It can represent a list of cipher suites containing a certain algorithm, or
63 cipher suites of a certain type. For example B<SHA1> represents all ciphers
64 suites using the digest algorithm SHA1 and B<SSLv3> represents all SSL v3
65 algorithms.
66
67 Lists of cipher suites can be combined in a single cipher string using the
68 B<+> character. This is used as a logical B<and> operation. For example
69 B<SHA1+DES> represents all cipher suites containing the SHA1 B<and> the DES
70 algorithms.
71
72 Each cipher string can be optionally preceded by the characters B<!>,
73 B<-> or B<+>.
74
75 If B<!> is used then the ciphers are permanently deleted from the list.
76 The ciphers deleted can never reappear in the list even if they are
77 explicitly stated.
78
79 If B<-> is used then the ciphers are deleted from the list, but some or
80 all of the ciphers can be added again by later options.
81
82 If B<+> is used then the ciphers are moved to the end of the list. This
83 option doesn't add any new ciphers it just moves matching existing ones.
84
85 If none of these characters is present then the string is just interpreted
86 as a list of ciphers to be appended to the current preference list. If the
87 list includes any ciphers already present they will be ignored: that is they
88 will not moved to the end of the list.
89
90 Additionally the cipher string B<@STRENGTH> can be used at any point to sort
91 the current cipher list in order of encryption algorithm key length.
92
93 =head1 CIPHER STRINGS
94
95 The following is a list of all permitted cipher strings and their meanings.
96
97 =over 4
98
99 =item B<DEFAULT>
100
101 the default cipher list. This is determined at compile time and is normally
102 B<TBA>. This must be the first cipher string specified.
103
104 =item B<ALL>
105
106 all 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
111 than 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
120 but excluding export cipher suites.
121
122 =item B<EXP>, B<EXPORT>
123
124 export encryption algorithms. Including 40 and 56 bits algorithms.
125
126 =item B<EXPORT40>
127
128 40 bit export encryption algorithms
129
130 =item B<EXPORT56>
131
132 56 bit export encryption algorithms.
133
134 =item B<eNULL>, B<NULL>
135
136 the "NULL" ciphers that is those offering no encryption. Because these offer no
137 encryption at all and are a security risk they are disabled unless explicitly
138 included.
139
140 =item B<aNULL>
141
142 the cipher suites offering no authentication. This is currently the anonymous
143 DH algorithms. These cipher suites are vulnerable to a "man in the middle"
144 attack and so there use is normally discouraged.
145
146 =item B<kRSA>, B<RSA>
147
148 cipher suites using RSA key exchange.
149
150 =item B<kEDH>
151
152 cipher suites using ephemeral DH key agreement.
153
154 =item B<kDHr>, B<kDHd>
155
156 cipher suites using DH key agreement and DH certificates signed by CAs with RSA
157 and DSS keys respectively. Not implemented.
158
159 =item B<aRSA>
160
161 cipher suites using RSA authentication, i.e. the certificates carry RSA keys.
162
163 =item B<aDSS>, B<DSS>
164
165 cipher suites using DSS authentication, i.e. the certificates carry DSS keys.
166
167 =item B<aDH>
168
169 cipher suites effectively using DH authentication, i.e. the certificates carry
170 DH keys.  Not implemented.
171
172 =item B<kFZA>, B<aFZA>, B<eFZA>, B<FZA>
173
174 ciphers suites using FORTEZZA key exchange, authentication, encryption or all
175 FORTEZZA algorithms. Not implemented.
176
177 =item B<TLSv1>, B<SSLv3>, B<SSLv2>
178
179 TLS v1.0, SSL v3.0 or SSL v2.0 cipher suites respectively.
180
181 =item B<DH>
182
183 cipher suites using DH, including anonymous DH.
184
185 =item B<ADH>
186
187 anoymous DH cipher suites.
188
189 =item B<3DES>
190
191 cipher suites using triple DES.
192
193 =item B<DES>
194
195 cipher suites using DES (not triple DES).
196
197 =item B<RC4>
198
199 cipher suites using RC4.
200
201 =item B<RC2>
202
203 cipher suites using RC2.
204
205 =item B<IDEA>
206
207 cipher suites using IDEA.
208
209 =item B<MD5>
210
211 cipher suites using MD5.
212
213 =item B<SHA1>, B<SHA>
214
215 cipher suites using SHA1.
216
217 =back
218
219 =head1 CIPHER SUITE NAMES
220
221 The following lists give the SSL or TLS cipher suites names from the
222 relevant 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
294 Note: 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
314 The non ephemeral DH modes are currently unimplimented in OpenSSL
315 because there is no support for DH certificates.
316
317 Some compiled versions of OpenSSL may not include all the ciphers
318 listed here because some ciphers were excluded at compile time.
319
320 =head1 EXAMPLES
321
322 Verbose listing of all OpenSSL ciphers including NULL ciphers:
323
324  openssl ciphers -v 'ALL:eNULL'
325
326 Include all ciphers except NULL and anonymous DH then sort by
327 strength:
328
329  openssl ciphers -v 'ALL:!ADH:@STRENGTH'
330
331 Include only 3DES ciphers and then place RSA ciphers last:
332
333  openssl ciphers -v '3DES:+RSA'
334
335 =head1 SEE ALSO
336
337 s_client(1), s_server(1), ssl(3)
338
339 =cut