Commit | Line | Data |
---|---|---|
984263bc MD |
1 | .\" Automatically generated by Pod::Man version 1.15 |
2 | .\" Wed Feb 19 16:49:38 2003 | |
3 | .\" | |
4 | .\" Standard preamble: | |
5 | .\" ====================================================================== | |
6 | .de Sh \" Subsection heading | |
7 | .br | |
8 | .if t .Sp | |
9 | .ne 5 | |
10 | .PP | |
11 | \fB\\$1\fR | |
12 | .PP | |
13 | .. | |
14 | .de Sp \" Vertical space (when we can't use .PP) | |
15 | .if t .sp .5v | |
16 | .if n .sp | |
17 | .. | |
18 | .de Ip \" List item | |
19 | .br | |
20 | .ie \\n(.$>=3 .ne \\$3 | |
21 | .el .ne 3 | |
22 | .IP "\\$1" \\$2 | |
23 | .. | |
24 | .de Vb \" Begin verbatim text | |
25 | .ft CW | |
26 | .nf | |
27 | .ne \\$1 | |
28 | .. | |
29 | .de Ve \" End verbatim text | |
30 | .ft R | |
31 | ||
32 | .fi | |
33 | .. | |
34 | .\" Set up some character translations and predefined strings. \*(-- will | |
35 | .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left | |
36 | .\" double quote, and \*(R" will give a right double quote. | will give a | |
37 | .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used | |
38 | .\" to do unbreakable dashes and therefore won't be available. \*(C` and | |
39 | .\" \*(C' expand to `' in nroff, nothing in troff, for use with C<> | |
40 | .tr \(*W-|\(bv\*(Tr | |
41 | .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' | |
42 | .ie n \{\ | |
43 | . ds -- \(*W- | |
44 | . ds PI pi | |
45 | . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch | |
46 | . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch | |
47 | . ds L" "" | |
48 | . ds R" "" | |
49 | . ds C` "" | |
50 | . ds C' "" | |
51 | 'br\} | |
52 | .el\{\ | |
53 | . ds -- \|\(em\| | |
54 | . ds PI \(*p | |
55 | . ds L" `` | |
56 | . ds R" '' | |
57 | 'br\} | |
58 | .\" | |
59 | .\" If the F register is turned on, we'll generate index entries on stderr | |
60 | .\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and | |
61 | .\" index entries marked with X<> in POD. Of course, you'll have to process | |
62 | .\" the output yourself in some meaningful fashion. | |
63 | .if \nF \{\ | |
64 | . de IX | |
65 | . tm Index:\\$1\t\\n%\t"\\$2" | |
66 | .. | |
67 | . nr % 0 | |
68 | . rr F | |
69 | .\} | |
70 | .\" | |
71 | .\" For nroff, turn off justification. Always turn off hyphenation; it | |
72 | .\" makes way too many mistakes in technical documents. | |
73 | .hy 0 | |
74 | .if n .na | |
75 | .\" | |
76 | .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). | |
77 | .\" Fear. Run. Save yourself. No user-serviceable parts. | |
78 | .bd B 3 | |
79 | . \" fudge factors for nroff and troff | |
80 | .if n \{\ | |
81 | . ds #H 0 | |
82 | . ds #V .8m | |
83 | . ds #F .3m | |
84 | . ds #[ \f1 | |
85 | . ds #] \fP | |
86 | .\} | |
87 | .if t \{\ | |
88 | . ds #H ((1u-(\\\\n(.fu%2u))*.13m) | |
89 | . ds #V .6m | |
90 | . ds #F 0 | |
91 | . ds #[ \& | |
92 | . ds #] \& | |
93 | .\} | |
94 | . \" simple accents for nroff and troff | |
95 | .if n \{\ | |
96 | . ds ' \& | |
97 | . ds ` \& | |
98 | . ds ^ \& | |
99 | . ds , \& | |
100 | . ds ~ ~ | |
101 | . ds / | |
102 | .\} | |
103 | .if t \{\ | |
104 | . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" | |
105 | . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' | |
106 | . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' | |
107 | . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' | |
108 | . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' | |
109 | . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' | |
110 | .\} | |
111 | . \" troff and (daisy-wheel) nroff accents | |
112 | .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' | |
113 | .ds 8 \h'\*(#H'\(*b\h'-\*(#H' | |
114 | .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] | |
115 | .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' | |
116 | .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' | |
117 | .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] | |
118 | .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] | |
119 | .ds ae a\h'-(\w'a'u*4/10)'e | |
120 | .ds Ae A\h'-(\w'A'u*4/10)'E | |
121 | . \" corrections for vroff | |
122 | .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' | |
123 | .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' | |
124 | . \" for low resolution devices (crt and lpr) | |
125 | .if \n(.H>23 .if \n(.V>19 \ | |
126 | \{\ | |
127 | . ds : e | |
128 | . ds 8 ss | |
129 | . ds o a | |
130 | . ds d- d\h'-1'\(ga | |
131 | . ds D- D\h'-1'\(hy | |
132 | . ds th \o'bp' | |
133 | . ds Th \o'LP' | |
134 | . ds ae ae | |
135 | . ds Ae AE | |
136 | .\} | |
137 | .rm #[ #] #H #V #F C | |
138 | .\" ====================================================================== | |
139 | .\" | |
140 | .IX Title "VERIFY 1" | |
141 | .TH VERIFY 1 "0.9.7a" "2003-02-19" "OpenSSL" | |
142 | .UC | |
143 | .SH "NAME" | |
144 | verify \- Utility to verify certificates. | |
145 | .SH "SYNOPSIS" | |
146 | .IX Header "SYNOPSIS" | |
147 | \&\fBopenssl\fR \fBverify\fR | |
148 | [\fB\-CApath directory\fR] | |
149 | [\fB\-CAfile file\fR] | |
150 | [\fB\-purpose purpose\fR] | |
151 | [\fB\-untrusted file\fR] | |
152 | [\fB\-help\fR] | |
153 | [\fB\-issuer_checks\fR] | |
154 | [\fB\-verbose\fR] | |
155 | [\fB-\fR] | |
156 | [certificates] | |
157 | .SH "DESCRIPTION" | |
158 | .IX Header "DESCRIPTION" | |
159 | The \fBverify\fR command verifies certificate chains. | |
160 | .SH "COMMAND OPTIONS" | |
161 | .IX Header "COMMAND OPTIONS" | |
162 | .Ip "\fB\-CApath directory\fR" 4 | |
163 | .IX Item "-CApath directory" | |
164 | A directory of trusted certificates. The certificates should have names | |
165 | of the form: hash.0 or have symbolic links to them of this | |
166 | form (\*(L"hash\*(R" is the hashed certificate subject name: see the \fB\-hash\fR option | |
167 | of the \fBx509\fR utility). Under Unix the \fBc_rehash\fR script will automatically | |
168 | create symbolic links to a directory of certificates. | |
169 | .Ip "\fB\-CAfile file\fR" 4 | |
170 | .IX Item "-CAfile file" | |
171 | A file of trusted certificates. The file should contain multiple certificates | |
172 | in \s-1PEM\s0 format concatenated together. | |
173 | .Ip "\fB\-untrusted file\fR" 4 | |
174 | .IX Item "-untrusted file" | |
175 | A file of untrusted certificates. The file should contain multiple certificates | |
176 | .Ip "\fB\-purpose purpose\fR" 4 | |
177 | .IX Item "-purpose purpose" | |
178 | the intended use for the certificate. Without this option no chain verification | |
179 | will be done. Currently accepted uses are \fBsslclient\fR, \fBsslserver\fR, | |
180 | \&\fBnssslserver\fR, \fBsmimesign\fR, \fBsmimeencrypt\fR. See the \fB\s-1VERIFY\s0 \s-1OPERATION\s0\fR | |
181 | section for more information. | |
182 | .Ip "\fB\-help\fR" 4 | |
183 | .IX Item "-help" | |
184 | prints out a usage message. | |
185 | .Ip "\fB\-verbose\fR" 4 | |
186 | .IX Item "-verbose" | |
187 | print extra information about the operations being performed. | |
188 | .Ip "\fB\-issuer_checks\fR" 4 | |
189 | .IX Item "-issuer_checks" | |
190 | print out diagnostics relating to searches for the issuer certificate | |
191 | of the current certificate. This shows why each candidate issuer | |
192 | certificate was rejected. However the presence of rejection messages | |
193 | does not itself imply that anything is wrong: during the normal | |
194 | verify process several rejections may take place. | |
195 | .Ip "\fB-\fR" 4 | |
196 | .IX Item "-" | |
197 | marks the last option. All arguments following this are assumed to be | |
198 | certificate files. This is useful if the first certificate filename begins | |
199 | with a \fB-\fR. | |
200 | .Ip "\fBcertificates\fR" 4 | |
201 | .IX Item "certificates" | |
202 | one or more certificates to verify. If no certificate filenames are included | |
203 | then an attempt is made to read a certificate from standard input. They should | |
204 | all be in \s-1PEM\s0 format. | |
205 | .SH "VERIFY OPERATION" | |
206 | .IX Header "VERIFY OPERATION" | |
207 | The \fBverify\fR program uses the same functions as the internal \s-1SSL\s0 and S/MIME | |
208 | verification, therefore this description applies to these verify operations | |
209 | too. | |
210 | .PP | |
211 | There is one crucial difference between the verify operations performed | |
212 | by the \fBverify\fR program: wherever possible an attempt is made to continue | |
213 | after an error whereas normally the verify operation would halt on the | |
214 | first error. This allows all the problems with a certificate chain to be | |
215 | determined. | |
216 | .PP | |
217 | The verify operation consists of a number of separate steps. | |
218 | .PP | |
219 | Firstly a certificate chain is built up starting from the supplied certificate | |
220 | and ending in the root \s-1CA\s0. It is an error if the whole chain cannot be built | |
221 | up. The chain is built up by looking up the issuers certificate of the current | |
222 | certificate. If a certificate is found which is its own issuer it is assumed | |
223 | to be the root \s-1CA\s0. | |
224 | .PP | |
225 | The process of 'looking up the issuers certificate' itself involves a number | |
226 | of steps. In versions of OpenSSL before 0.9.5a the first certificate whose | |
227 | subject name matched the issuer of the current certificate was assumed to be | |
228 | the issuers certificate. In OpenSSL 0.9.6 and later all certificates | |
229 | whose subject name matches the issuer name of the current certificate are | |
230 | subject to further tests. The relevant authority key identifier components | |
231 | of the current certificate (if present) must match the subject key identifier | |
232 | (if present) and issuer and serial number of the candidate issuer, in addition | |
233 | the keyUsage extension of the candidate issuer (if present) must permit | |
234 | certificate signing. | |
235 | .PP | |
236 | The lookup first looks in the list of untrusted certificates and if no match | |
237 | is found the remaining lookups are from the trusted certificates. The root \s-1CA\s0 | |
238 | is always looked up in the trusted certificate list: if the certificate to | |
239 | verify is a root certificate then an exact match must be found in the trusted | |
240 | list. | |
241 | .PP | |
242 | The second operation is to check every untrusted certificate's extensions for | |
243 | consistency with the supplied purpose. If the \fB\-purpose\fR option is not included | |
244 | then no checks are done. The supplied or \*(L"leaf\*(R" certificate must have extensions | |
245 | compatible with the supplied purpose and all other certificates must also be valid | |
246 | \&\s-1CA\s0 certificates. The precise extensions required are described in more detail in | |
247 | the \fB\s-1CERTIFICATE\s0 \s-1EXTENSIONS\s0\fR section of the \fBx509\fR utility. | |
248 | .PP | |
249 | The third operation is to check the trust settings on the root \s-1CA\s0. The root | |
250 | \&\s-1CA\s0 should be trusted for the supplied purpose. For compatibility with previous | |
251 | versions of SSLeay and OpenSSL a certificate with no trust settings is considered | |
252 | to be valid for all purposes. | |
253 | .PP | |
254 | The final operation is to check the validity of the certificate chain. The validity | |
255 | period is checked against the current system time and the notBefore and notAfter | |
256 | dates in the certificate. The certificate signatures are also checked at this | |
257 | point. | |
258 | .PP | |
259 | If all operations complete successfully then certificate is considered valid. If | |
260 | any operation fails then the certificate is not valid. | |
261 | .SH "DIAGNOSTICS" | |
262 | .IX Header "DIAGNOSTICS" | |
263 | When a verify operation fails the output messages can be somewhat cryptic. The | |
264 | general form of the error message is: | |
265 | .PP | |
266 | .Vb 2 | |
267 | \& server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit) | |
268 | \& error 24 at 1 depth lookup:invalid CA certificate | |
269 | .Ve | |
270 | The first line contains the name of the certificate being verified followed by | |
271 | the subject name of the certificate. The second line contains the error number | |
272 | and the depth. The depth is number of the certificate being verified when a | |
273 | problem was detected starting with zero for the certificate being verified itself | |
274 | then 1 for the \s-1CA\s0 that signed the certificate and so on. Finally a text version | |
275 | of the error number is presented. | |
276 | .PP | |
277 | An exhaustive list of the error codes and messages is shown below, this also | |
278 | includes the name of the error code as defined in the header file x509_vfy.h | |
279 | Some of the error codes are defined but never returned: these are described | |
280 | as \*(L"unused\*(R". | |
281 | .Ip "\fB0 X509_V_OK: ok\fR" 4 | |
282 | .IX Item "0 X509_V_OK: ok" | |
283 | the operation was successful. | |
284 | .Ip "\fB2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate\fR" 4 | |
285 | .IX Item "2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate" | |
286 | the issuer certificate could not be found: this occurs if the issuer certificate | |
287 | of an untrusted certificate cannot be found. | |
288 | .Ip "\fB3 X509_V_ERR_UNABLE_TO_GET_CRL unable to get certificate \s-1CRL\s0\fR" 4 | |
289 | .IX Item "3 X509_V_ERR_UNABLE_TO_GET_CRL unable to get certificate CRL" | |
290 | the \s-1CRL\s0 of a certificate could not be found. Unused. | |
291 | .Ip "\fB4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE: unable to decrypt certificate's signature\fR" 4 | |
292 | .IX Item "4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE: unable to decrypt certificate's signature" | |
293 | the certificate signature could not be decrypted. This means that the actual signature value | |
294 | could not be determined rather than it not matching the expected value, this is only | |
295 | meaningful for \s-1RSA\s0 keys. | |
296 | .Ip "\fB5 X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE: unable to decrypt \s-1CRL\s0's signature\fR" 4 | |
297 | .IX Item "5 X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE: unable to decrypt CRL's signature" | |
298 | the \s-1CRL\s0 signature could not be decrypted: this means that the actual signature value | |
299 | could not be determined rather than it not matching the expected value. Unused. | |
300 | .Ip "\fB6 X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY: unable to decode issuer public key\fR" 4 | |
301 | .IX Item "6 X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY: unable to decode issuer public key" | |
302 | the public key in the certificate SubjectPublicKeyInfo could not be read. | |
303 | .Ip "\fB7 X509_V_ERR_CERT_SIGNATURE_FAILURE: certificate signature failure\fR" 4 | |
304 | .IX Item "7 X509_V_ERR_CERT_SIGNATURE_FAILURE: certificate signature failure" | |
305 | the signature of the certificate is invalid. | |
306 | .Ip "\fB8 X509_V_ERR_CRL_SIGNATURE_FAILURE: \s-1CRL\s0 signature failure\fR" 4 | |
307 | .IX Item "8 X509_V_ERR_CRL_SIGNATURE_FAILURE: CRL signature failure" | |
308 | the signature of the certificate is invalid. Unused. | |
309 | .Ip "\fB9 X509_V_ERR_CERT_NOT_YET_VALID: certificate is not yet valid\fR" 4 | |
310 | .IX Item "9 X509_V_ERR_CERT_NOT_YET_VALID: certificate is not yet valid" | |
311 | the certificate is not yet valid: the notBefore date is after the current time. | |
312 | .Ip "\fB10 X509_V_ERR_CERT_HAS_EXPIRED: certificate has expired\fR" 4 | |
313 | .IX Item "10 X509_V_ERR_CERT_HAS_EXPIRED: certificate has expired" | |
314 | the certificate has expired: that is the notAfter date is before the current time. | |
315 | .Ip "\fB11 X509_V_ERR_CRL_NOT_YET_VALID: \s-1CRL\s0 is not yet valid\fR" 4 | |
316 | .IX Item "11 X509_V_ERR_CRL_NOT_YET_VALID: CRL is not yet valid" | |
317 | the \s-1CRL\s0 is not yet valid. Unused. | |
318 | .Ip "\fB12 X509_V_ERR_CRL_HAS_EXPIRED: \s-1CRL\s0 has expired\fR" 4 | |
319 | .IX Item "12 X509_V_ERR_CRL_HAS_EXPIRED: CRL has expired" | |
320 | the \s-1CRL\s0 has expired. Unused. | |
321 | .Ip "\fB13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: format error in certificate's notBefore field\fR" 4 | |
322 | .IX Item "13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: format error in certificate's notBefore field" | |
323 | the certificate notBefore field contains an invalid time. | |
324 | .Ip "\fB14 X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD: format error in certificate's notAfter field\fR" 4 | |
325 | .IX Item "14 X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD: format error in certificate's notAfter field" | |
326 | the certificate notAfter field contains an invalid time. | |
327 | .Ip "\fB15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD: format error in \s-1CRL\s0's lastUpdate field\fR" 4 | |
328 | .IX Item "15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD: format error in CRL's lastUpdate field" | |
329 | the \s-1CRL\s0 lastUpdate field contains an invalid time. Unused. | |
330 | .Ip "\fB16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD: format error in \s-1CRL\s0's nextUpdate field\fR" 4 | |
331 | .IX Item "16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD: format error in CRL's nextUpdate field" | |
332 | the \s-1CRL\s0 nextUpdate field contains an invalid time. Unused. | |
333 | .Ip "\fB17 X509_V_ERR_OUT_OF_MEM: out of memory\fR" 4 | |
334 | .IX Item "17 X509_V_ERR_OUT_OF_MEM: out of memory" | |
335 | an error occurred trying to allocate memory. This should never happen. | |
336 | .Ip "\fB18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: self signed certificate\fR" 4 | |
337 | .IX Item "18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: self signed certificate" | |
338 | the passed certificate is self signed and the same certificate cannot be found in the list of | |
339 | trusted certificates. | |
340 | .Ip "\fB19 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: self signed certificate in certificate chain\fR" 4 | |
341 | .IX Item "19 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: self signed certificate in certificate chain" | |
342 | the certificate chain could be built up using the untrusted certificates but the root could not | |
343 | be found locally. | |
344 | .Ip "\fB20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: unable to get local issuer certificate\fR" 4 | |
345 | .IX Item "20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: unable to get local issuer certificate" | |
346 | the issuer certificate of a locally looked up certificate could not be found. This normally means | |
347 | the list of trusted certificates is not complete. | |
348 | .Ip "\fB21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: unable to verify the first certificate\fR" 4 | |
349 | .IX Item "21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: unable to verify the first certificate" | |
350 | no signatures could be verified because the chain contains only one certificate and it is not | |
351 | self signed. | |
352 | .Ip "\fB22 X509_V_ERR_CERT_CHAIN_TOO_LONG: certificate chain too long\fR" 4 | |
353 | .IX Item "22 X509_V_ERR_CERT_CHAIN_TOO_LONG: certificate chain too long" | |
354 | the certificate chain length is greater than the supplied maximum depth. Unused. | |
355 | .Ip "\fB23 X509_V_ERR_CERT_REVOKED: certificate revoked\fR" 4 | |
356 | .IX Item "23 X509_V_ERR_CERT_REVOKED: certificate revoked" | |
357 | the certificate has been revoked. Unused. | |
358 | .Ip "\fB24 X509_V_ERR_INVALID_CA: invalid \s-1CA\s0 certificate\fR" 4 | |
359 | .IX Item "24 X509_V_ERR_INVALID_CA: invalid CA certificate" | |
360 | a \s-1CA\s0 certificate is invalid. Either it is not a \s-1CA\s0 or its extensions are not consistent | |
361 | with the supplied purpose. | |
362 | .Ip "\fB25 X509_V_ERR_PATH_LENGTH_EXCEEDED: path length constraint exceeded\fR" 4 | |
363 | .IX Item "25 X509_V_ERR_PATH_LENGTH_EXCEEDED: path length constraint exceeded" | |
364 | the basicConstraints pathlength parameter has been exceeded. | |
365 | .Ip "\fB26 X509_V_ERR_INVALID_PURPOSE: unsupported certificate purpose\fR" 4 | |
366 | .IX Item "26 X509_V_ERR_INVALID_PURPOSE: unsupported certificate purpose" | |
367 | the supplied certificate cannot be used for the specified purpose. | |
368 | .Ip "\fB27 X509_V_ERR_CERT_UNTRUSTED: certificate not trusted\fR" 4 | |
369 | .IX Item "27 X509_V_ERR_CERT_UNTRUSTED: certificate not trusted" | |
370 | the root \s-1CA\s0 is not marked as trusted for the specified purpose. | |
371 | .Ip "\fB28 X509_V_ERR_CERT_REJECTED: certificate rejected\fR" 4 | |
372 | .IX Item "28 X509_V_ERR_CERT_REJECTED: certificate rejected" | |
373 | the root \s-1CA\s0 is marked to reject the specified purpose. | |
374 | .Ip "\fB29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH: subject issuer mismatch\fR" 4 | |
375 | .IX Item "29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH: subject issuer mismatch" | |
376 | the current candidate issuer certificate was rejected because its subject name | |
377 | did not match the issuer name of the current certificate. Only displayed when | |
378 | the \fB\-issuer_checks\fR option is set. | |
379 | .Ip "\fB30 X509_V_ERR_AKID_SKID_MISMATCH: authority and subject key identifier mismatch\fR" 4 | |
380 | .IX Item "30 X509_V_ERR_AKID_SKID_MISMATCH: authority and subject key identifier mismatch" | |
381 | the current candidate issuer certificate was rejected because its subject key | |
382 | identifier was present and did not match the authority key identifier current | |
383 | certificate. Only displayed when the \fB\-issuer_checks\fR option is set. | |
384 | .Ip "\fB31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH: authority and issuer serial number mismatch\fR" 4 | |
385 | .IX Item "31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH: authority and issuer serial number mismatch" | |
386 | the current candidate issuer certificate was rejected because its issuer name | |
387 | and serial number was present and did not match the authority key identifier | |
388 | of the current certificate. Only displayed when the \fB\-issuer_checks\fR option is set. | |
389 | .Ip "\fB32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN:key usage does not include certificate signing\fR" 4 | |
390 | .IX Item "32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN:key usage does not include certificate signing" | |
391 | the current candidate issuer certificate was rejected because its keyUsage extension | |
392 | does not permit certificate signing. | |
393 | .Ip "\fB50 X509_V_ERR_APPLICATION_VERIFICATION: application verification failure\fR" 4 | |
394 | .IX Item "50 X509_V_ERR_APPLICATION_VERIFICATION: application verification failure" | |
395 | an application specific error. Unused. | |
396 | .SH "BUGS" | |
397 | .IX Header "BUGS" | |
398 | Although the issuer checks are a considerably improvement over the old technique they still | |
399 | suffer from limitations in the underlying X509_LOOKUP \s-1API\s0. One consequence of this is that | |
400 | trusted certificates with matching subject name must either appear in a file (as specified by the | |
401 | \&\fB\-CAfile\fR option) or a directory (as specified by \fB\-CApath\fR. If they occur in both then only | |
402 | the certificates in the file will be recognised. | |
403 | .PP | |
404 | Previous versions of OpenSSL assume certificates with matching subject name are identical and | |
405 | mishandled them. | |
406 | .SH "SEE ALSO" | |
407 | .IX Header "SEE ALSO" | |
408 | x509(1) |