Refactor -engine documentation
[openssl.git] / doc / man1 / openssl-verify.pod.in
1 =pod
2 {- OpenSSL::safe::output_do_not_edit_headers(); -}
3
4 =head1 NAME
5
6 openssl-verify - Utility to verify certificates
7
8 =head1 SYNOPSIS
9
10 B<openssl> B<verify>
11 [B<-help>]
12 [B<-allow_proxy_certs>]
13 [B<-attime> I<timestamp>]
14 [B<-check_ss_sig>]
15 [B<-CRLfile> I<file>]
16 [B<-crl_download>]
17 [B<-crl_check>]
18 [B<-crl_check_all>]
19 [B<-explicit_policy>]
20 [B<-extended_crl>]
21 [B<-ignore_critical>]
22 [B<-inhibit_any>]
23 [B<-inhibit_map>]
24 [B<-no_check_time>]
25 [B<-partial_chain>]
26 [B<-policy> I<arg>]
27 [B<-policy_check>]
28 [B<-policy_print>]
29 [B<-purpose> I<purpose>]
30 [B<-suiteB_128>]
31 [B<-suiteB_128_only>]
32 [B<-suiteB_192>]
33 [B<-trusted_first>]
34 [B<-no_alt_chains>]
35 [B<-untrusted> I<file>]
36 [B<-trusted> I<file>]
37 [B<-use_deltas>]
38 [B<-verbose>]
39 [B<-auth_level> I<level>]
40 [B<-verify_depth> I<num>]
41 [B<-verify_email> I<email>]
42 [B<-verify_hostname> I<hostname>]
43 [B<-verify_ip> I<ip>]
44 [B<-verify_name> I<name>]
45 [B<-x509_strict>]
46 [B<-show_chain>]
47 [B<-sm2-id> I<string>]
48 [B<-sm2-hex-id> I<hex-string>]
49 {- $OpenSSL::safe::opt_name_synopsis -}
50 {- $OpenSSL::safe::opt_trust_synopsis -}
51 {- $OpenSSL::safe::opt_engine_synopsis -}
52 [B<-->]
53 [I<certificate> ...]
54
55 =for openssl ifdef engine sm2-id sm2-hex-id
56
57 =head1 DESCRIPTION
58
59 This command verifies certificate chains.
60
61 =head1 OPTIONS
62
63 =over 4
64
65 =item B<-help>
66
67 Print out a usage message.
68
69 =item B<-allow_proxy_certs>
70
71 Allow the verification of proxy certificates.
72
73 =item B<-attime> I<timestamp>
74
75 Perform validation checks using time specified by I<timestamp> and not
76 current system time. I<timestamp> is the number of seconds since
77 01.01.1970 (UNIX time).
78
79 =item B<-check_ss_sig>
80
81 Verify the signature on the self-signed root CA. This is disabled by default
82 because it doesn't add any security.
83
84 =item B<-CRLfile> I<file>
85
86 The I<file> should contain one or more CRLs in PEM format.
87 This option can be specified more than once to include CRLs from multiple
88 I<file>s.
89
90 =item B<-crl_download>
91
92 Attempt to download CRL information for this certificate.
93
94 =item B<-crl_check>
95
96 Checks end entity certificate validity by attempting to look up a valid CRL.
97 If a valid CRL cannot be found an error occurs.
98
99 =item B<-crl_check_all>
100
101 Checks the validity of B<all> certificates in the chain by attempting
102 to look up valid CRLs.
103
104 =item B<-explicit_policy>
105
106 Set policy variable require-explicit-policy (see RFC5280).
107
108 =item B<-extended_crl>
109
110 Enable extended CRL features such as indirect CRLs and alternate CRL
111 signing keys.
112
113 =item B<-ignore_critical>
114
115 Normally if an unhandled critical extension is present which is not
116 supported by OpenSSL the certificate is rejected (as required by RFC5280).
117 If this option is set critical extensions are ignored.
118
119 =item B<-inhibit_any>
120
121 Set policy variable inhibit-any-policy (see RFC5280).
122
123 =item B<-inhibit_map>
124
125 Set policy variable inhibit-policy-mapping (see RFC5280).
126
127 =item B<-no_check_time>
128
129 This option suppresses checking the validity period of certificates and CRLs
130 against the current time. If option B<-attime> is used to specify
131 a verification time, the check is not suppressed.
132
133 =item B<-partial_chain>
134
135 Allow verification to succeed even if a I<complete> chain cannot be built to a
136 self-signed trust-anchor, provided it is possible to construct a chain to a
137 trusted certificate that might not be self-signed.
138
139 =item B<-policy> I<arg>
140
141 Enable policy processing and add I<arg> to the user-initial-policy-set (see
142 RFC5280). The policy I<arg> can be an object name an OID in numeric form.
143 This argument can appear more than once.
144
145 =item B<-policy_check>
146
147 Enables certificate policy processing.
148
149 =item B<-policy_print>
150
151 Print out diagnostics related to policy processing.
152
153 =item B<-purpose> I<purpose>
154
155 The intended use for the certificate. If this option is not specified,
156 this command will not consider certificate purpose during chain
157 verification.
158 Currently accepted uses are B<sslclient>, B<sslserver>, B<nssslserver>,
159 B<smimesign>, B<smimeencrypt>. See the L</VERIFY OPERATION> section for more
160 information.
161
162 =item B<-suiteB_128_only>, B<-suiteB_128>, B<-suiteB_192>
163
164 Enable the Suite B mode operation at 128 bit Level of Security, 128 bit or
165 192 bit, or only 192 bit Level of Security respectively.
166 See RFC6460 for details. In particular the supported signature algorithms are
167 reduced to support only ECDSA and SHA256 or SHA384 and only the elliptic curves
168 P-256 and P-384.
169
170 =item B<-trusted_first>
171
172 When constructing the certificate chain, use the trusted certificates specified
173 via B<-CAfile>, B<-CApath>, B<-CAstore> or B<-trusted> before any certificates
174 specified via B<-untrusted>.
175 This can be useful in environments with Bridge or Cross-Certified CAs.
176 As of OpenSSL 1.1.0 this option is on by default and cannot be disabled.
177
178 =item B<-no_alt_chains>
179
180 By default, unless B<-trusted_first> is specified, when building a certificate
181 chain, if the first certificate chain found is not trusted, then OpenSSL will
182 attempt to replace untrusted issuer certificates with certificates from the
183 trust store to see if an alternative chain can be found that is trusted.
184 As of OpenSSL 1.1.0, with B<-trusted_first> always on, this option has no
185 effect.
186
187 =item B<-untrusted> I<file>
188
189 A I<file> of additional untrusted certificates (intermediate issuer CAs) used
190 to construct a certificate chain from the subject certificate to a trust-anchor.
191 The I<file> should contain one or more certificates in PEM format.
192 This option can be specified more than once to include untrusted certificates
193 from multiple I<file>s.
194
195 =item B<-trusted> I<file>
196
197 A I<file> of trusted certificates, which must be self-signed, unless the
198 B<-partial_chain> option is specified.
199 The I<file> contains one or more certificates in PEM format.
200 With this option, no additional (e.g., default) certificate lists are
201 consulted.
202 That is, the only trust-anchors are those listed in I<file>.
203 This option can be specified more than once to include trusted certificates
204 from multiple I<file>s.
205 This option implies the B<-no-CAfile>, B<-no-CApath> and B<-no-CAstore> options.
206 This option cannot be used in combination with any of the B<-CAfile>,
207 B<-CApath> or B<-CAstore> options.
208
209 =item B<-use_deltas>
210
211 Enable support for delta CRLs.
212
213 =item B<-verbose>
214
215 Print extra information about the operations being performed.
216
217 =item B<-auth_level> I<level>
218
219 Set the certificate chain authentication security level to I<level>.
220 The authentication security level determines the acceptable signature and
221 public key strength when verifying certificate chains.
222 For a certificate chain to validate, the public keys of all the certificates
223 must meet the specified security I<level>.
224 The signature algorithm security level is enforced for all the certificates in
225 the chain except for the chain's I<trust anchor>, which is either directly
226 trusted or validated by means other than its signature.
227 See L<SSL_CTX_set_security_level(3)> for the definitions of the available
228 levels.
229 The default security level is -1, or "not set".
230 At security level 0 or lower all algorithms are acceptable.
231 Security level 1 requires at least 80-bit-equivalent security and is broadly
232 interoperable, though it will, for example, reject MD5 signatures or RSA keys
233 shorter than 1024 bits.
234
235 =item B<-verify_depth> I<num>
236
237 Limit the certificate chain to I<num> intermediate CA certificates.
238 A maximal depth chain can have up to I<num>+2 certificates, since neither the
239 end-entity certificate nor the trust-anchor certificate count against the
240 B<-verify_depth> limit.
241
242 =item B<-verify_email> I<email>
243
244 Verify if I<email> matches the email address in Subject Alternative Name or
245 the email in the subject Distinguished Name.
246
247 =item B<-verify_hostname> I<hostname>
248
249 Verify if I<hostname> matches DNS name in Subject Alternative Name or
250 Common Name in the subject certificate.
251
252 =item B<-verify_ip> I<ip>
253
254 Verify if I<ip> matches the IP address in Subject Alternative Name of
255 the subject certificate.
256
257 =item B<-verify_name> I<name>
258
259 Use default verification policies like trust model and required certificate
260 policies identified by I<name>.
261 The trust model determines which auxiliary trust or reject OIDs are applicable
262 to verifying the given certificate chain.
263 See the B<-addtrust> and B<-addreject> options for L<openssl-x509(1)>.
264 Supported policy names include: B<default>, B<pkcs7>, B<smime_sign>,
265 B<ssl_client>, B<ssl_server>.
266 These mimics the combinations of purpose and trust settings used in SSL, CMS
267 and S/MIME.
268 As of OpenSSL 1.1.0, the trust model is inferred from the purpose when not
269 specified, so the B<-verify_name> options are functionally equivalent to the
270 corresponding B<-purpose> settings.
271
272 =item B<-x509_strict>
273
274 For strict X.509 compliance, disable non-compliant workarounds for broken
275 certificates.
276
277 =item B<-show_chain>
278
279 Display information about the certificate chain that has been built (if
280 successful). Certificates in the chain that came from the untrusted list will be
281 flagged as "untrusted".
282
283 =item B<-sm2-id>
284
285 Specify the ID string to use when verifying an SM2 certificate. The ID string is
286 required by the SM2 signature algorithm for signing and verification.
287
288 =item B<-sm2-hex-id>
289
290 Specify a binary ID string to use when signing or verifying using an SM2
291 certificate. The argument for this option is string of hexadecimal digits.
292
293 {- $OpenSSL::safe::opt_name_item -}
294
295 {- $OpenSSL::safe::opt_trust_item -}
296
297 {- $OpenSSL::safe::opt_engine_item -}
298 To load certificates or CRLs that require engine support, specify the
299 B<-engine> option before any of the
300 B<-trusted>, B<-untrusted> or B<-CRLfile> options.
301
302 =item B<-->
303
304 Indicates the last option. All arguments following this are assumed to be
305 certificate files. This is useful if the first certificate filename begins
306 with a B<-->.
307
308 =item I<certificate> ...
309
310 One or more certificates to verify. If no certificates are given,
311 this command will attempt to read a certificate from standard input.
312 Certificates must be in PEM format.
313
314 =back
315
316 =head1 VERIFY OPERATION
317
318 This command uses the same functions as the internal SSL
319 and S/MIME verification, therefore this description applies to these verify
320 operations too.
321
322 There is one crucial difference between the verify operations performed
323 by this command: wherever possible an attempt is made to
324 continue after an error whereas normally the verify operation would halt on
325 the first error. This allows all the problems with a certificate chain to be
326 determined.
327
328 The verify operation consists of a number of separate steps.
329
330 Firstly a certificate chain is built up starting from the supplied certificate
331 and ending in the root CA.
332 It is an error if the whole chain cannot be built up.
333 The chain is built up by looking up the issuers certificate of the current
334 certificate.
335 If a certificate is found which is its own issuer it is assumed to be the root
336 CA.
337
338 The process of 'looking up the issuers certificate' itself involves a number of
339 steps.
340 After all certificates whose subject name matches the issuer name of the current
341 certificate are subject to further tests.
342 The relevant authority key identifier components of the current certificate (if
343 present) must match the subject key identifier (if present) and issuer and
344 serial number of the candidate issuer, in addition the keyUsage extension of
345 the candidate issuer (if present) must permit certificate signing.
346
347 The lookup first looks in the list of untrusted certificates and if no match
348 is found the remaining lookups are from the trusted certificates. The root CA
349 is always looked up in the trusted certificate list: if the certificate to
350 verify is a root certificate then an exact match must be found in the trusted
351 list.
352
353 The second operation is to check every untrusted certificate's extensions for
354 consistency with the supplied purpose. If the B<-purpose> option is not included
355 then no checks are done. The supplied or "leaf" certificate must have extensions
356 compatible with the supplied purpose and all other certificates must also be
357 valid CA certificates. The precise extensions required are described in more
358 detail in L<openssl-x509(1)/CERTIFICATE EXTENSIONS>.
359
360 The third operation is to check the trust settings on the root CA. The root CA
361 should be trusted for the supplied purpose.
362 For compatibility with previous versions of OpenSSL, a certificate with no
363 trust settings is considered to be valid for all purposes.
364
365 The final operation is to check the validity of the certificate chain. The
366 validity period is checked against the current system time and the notBefore
367 and notAfter dates in the certificate. The certificate signatures are also
368 checked at this point.
369
370 If all operations complete successfully then certificate is considered valid. If
371 any operation fails then the certificate is not valid.
372
373 =head1 DIAGNOSTICS
374
375 When a verify operation fails the output messages can be somewhat cryptic. The
376 general form of the error message is:
377
378  server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
379  error 24 at 1 depth lookup:invalid CA certificate
380
381 The first line contains the name of the certificate being verified followed by
382 the subject name of the certificate. The second line contains the error number
383 and the depth. The depth is number of the certificate being verified when a
384 problem was detected starting with zero for the certificate being verified itself
385 then 1 for the CA that signed the certificate and so on. Finally a text version
386 of the error number is presented.
387
388 A partial list of the error codes and messages is shown below, this also
389 includes the name of the error code as defined in the header file
390 F<< <openssl/x509_vfy.h> >>.
391 Some of the error codes are defined but never returned: these are described
392 as "unused".
393
394 =over 4
395
396 =item B<X509_V_OK>
397
398 The operation was successful.
399
400 =item B<X509_V_ERR_UNSPECIFIED>
401
402 Unspecified error; should not happen.
403
404 =item B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT>
405
406 The issuer certificate of a looked up certificate could not be found. This
407 normally means the list of trusted certificates is not complete.
408
409 =item B<X509_V_ERR_UNABLE_TO_GET_CRL>
410
411 The CRL of a certificate could not be found.
412
413 =item B<X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE>
414
415 The certificate signature could not be decrypted. This means that the
416 actual signature value could not be determined rather than it not matching
417 the expected value, this is only meaningful for RSA keys.
418
419 =item B<X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE>
420
421 The CRL signature could not be decrypted: this means that the actual
422 signature value could not be determined rather than it not matching the
423 expected value. Unused.
424
425 =item B<X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY>
426
427 The public key in the certificate SubjectPublicKeyInfo could not be read.
428
429 =item B<X509_V_ERR_CERT_SIGNATURE_FAILURE>
430
431 The signature of the certificate is invalid.
432
433 =item B<X509_V_ERR_CRL_SIGNATURE_FAILURE>
434
435 The signature of the certificate is invalid.
436
437 =item B<X509_V_ERR_CERT_NOT_YET_VALID>
438
439 The certificate is not yet valid: the notBefore date is after the
440 current time.
441
442 =item B<X509_V_ERR_CERT_HAS_EXPIRED>
443
444 The certificate has expired: that is the notAfter date is before the
445 current time.
446
447 =item B<X509_V_ERR_CRL_NOT_YET_VALID>
448
449 The CRL is not yet valid.
450
451 =item B<X509_V_ERR_CRL_HAS_EXPIRED>
452
453 The CRL has expired.
454
455 =item B<X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD>
456
457 The certificate notBefore field contains an invalid time.
458
459 =item B<X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD>
460
461 The certificate notAfter field contains an invalid time.
462
463 =item B<X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD>
464
465 The CRL lastUpdate field contains an invalid time.
466
467 =item B<X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD>
468
469 The CRL nextUpdate field contains an invalid time.
470
471 =item B<X509_V_ERR_OUT_OF_MEM>
472
473 An error occurred trying to allocate memory. This should never happen.
474
475 =item B<X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT>
476
477 The passed certificate is self-signed and the same certificate cannot
478 be found in the list of trusted certificates.
479
480 =item B<X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN>
481
482 The certificate chain could be built up using the untrusted certificates
483 but the root could not be found locally.
484
485 =item B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY>
486
487 The issuer certificate could not be found: this occurs if the issuer
488 certificate of an untrusted certificate cannot be found.
489
490 =item B<X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE>
491
492 No signatures could be verified because the chain contains only one
493 certificate and it is not self signed.
494
495 =item B<X509_V_ERR_CERT_CHAIN_TOO_LONG>
496
497 The certificate chain length is greater than the supplied maximum
498 depth. Unused.
499
500 =item B<X509_V_ERR_CERT_REVOKED>
501
502 The certificate has been revoked.
503
504 =item B<X509_V_ERR_INVALID_CA>
505
506 A CA certificate is invalid. Either it is not a CA or its extensions
507 are not consistent with the supplied purpose.
508
509 =item B<X509_V_ERR_PATH_LENGTH_EXCEEDED>
510
511 The basicConstraints pathlength parameter has been exceeded.
512
513 =item B<X509_V_ERR_INVALID_PURPOSE>
514
515 The supplied certificate cannot be used for the specified purpose.
516
517 =item B<X509_V_ERR_CERT_UNTRUSTED>
518
519 The root CA is not marked as trusted for the specified purpose.
520
521 =item B<X509_V_ERR_CERT_REJECTED>
522
523 The root CA is marked to reject the specified purpose.
524
525 =item B<X509_V_ERR_SUBJECT_ISSUER_MISMATCH>
526
527 Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
528 B<-issuer_checks> option.
529
530 =item B<X509_V_ERR_AKID_SKID_MISMATCH>
531
532 Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
533 B<-issuer_checks> option.
534
535 =item B<X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH>
536
537 Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
538 B<-issuer_checks> option.
539
540 =item B<X509_V_ERR_KEYUSAGE_NO_CERTSIGN>
541
542 Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
543 B<-issuer_checks> option.
544
545 =item B<X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER>
546
547 Unable to get CRL issuer certificate.
548
549 =item B<X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION>
550
551 Unhandled critical extension.
552
553 =item B<X509_V_ERR_KEYUSAGE_NO_CRL_SIGN>
554
555 Key usage does not include CRL signing.
556
557 =item B<X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION>
558
559 Unhandled critical CRL extension.
560
561 =item B<X509_V_ERR_INVALID_NON_CA>
562
563 Invalid non-CA certificate has CA markings.
564
565 =item B<X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED>
566
567 Proxy path length constraint exceeded.
568
569 =item B<X509_V_ERR_PROXY_SUBJECT_INVALID>
570
571 Proxy certificate subject is invalid.  It MUST be the same as the issuer
572 with a single CN component added.
573
574 =item B<X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE>
575
576 Key usage does not include digital signature.
577
578 =item B<X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED>
579
580 Proxy certificates not allowed, please use B<-allow_proxy_certs>.
581
582 =item B<X509_V_ERR_INVALID_EXTENSION>
583
584 Invalid or inconsistent certificate extension.
585
586 =item B<X509_V_ERR_INVALID_POLICY_EXTENSION>
587
588 Invalid or inconsistent certificate policy extension.
589
590 =item B<X509_V_ERR_NO_EXPLICIT_POLICY>
591
592 No explicit policy.
593
594 =item B<X509_V_ERR_DIFFERENT_CRL_SCOPE>
595
596 Different CRL scope.
597
598 =item B<X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE>
599
600 Unsupported extension feature.
601
602 =item B<X509_V_ERR_UNNESTED_RESOURCE>
603
604 RFC 3779 resource not subset of parent's resources.
605
606 =item B<X509_V_ERR_PERMITTED_VIOLATION>
607
608 Permitted subtree violation.
609
610 =item B<X509_V_ERR_EXCLUDED_VIOLATION>
611
612 Excluded subtree violation.
613
614 =item B<X509_V_ERR_SUBTREE_MINMAX>
615
616 Name constraints minimum and maximum not supported.
617
618 =item B<X509_V_ERR_APPLICATION_VERIFICATION>
619
620 Application verification failure. Unused.
621
622 =item B<X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE>
623
624 Unsupported name constraint type.
625
626 =item B<X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX>
627
628 Unsupported or invalid name constraint syntax.
629
630 =item B<X509_V_ERR_UNSUPPORTED_NAME_SYNTAX>
631
632 Unsupported or invalid name syntax.
633
634 =item B<X509_V_ERR_CRL_PATH_VALIDATION_ERROR>
635
636 CRL path validation error.
637
638 =item B<X509_V_ERR_PATH_LOOP>
639
640 Path loop.
641
642 =item B<X509_V_ERR_SUITE_B_INVALID_VERSION>
643
644 Suite B: certificate version invalid.
645
646 =item B<X509_V_ERR_SUITE_B_INVALID_ALGORITHM>
647
648 Suite B: invalid public key algorithm.
649
650 =item B<X509_V_ERR_SUITE_B_INVALID_CURVE>
651
652 Suite B: invalid ECC curve.
653
654 =item B<X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM>
655
656 Suite B: invalid signature algorithm.
657
658 =item B<X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED>
659
660 Suite B: curve not allowed for this LOS.
661
662 =item B<X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256>
663
664 Suite B: cannot sign P-384 with P-256.
665
666 =item B<X509_V_ERR_HOSTNAME_MISMATCH>
667
668 Hostname mismatch.
669
670 =item B<X509_V_ERR_EMAIL_MISMATCH>
671
672 Email address mismatch.
673
674 =item B<X509_V_ERR_IP_ADDRESS_MISMATCH>
675
676 IP address mismatch.
677
678 =item B<X509_V_ERR_DANE_NO_MATCH>
679
680 DANE TLSA authentication is enabled, but no TLSA records matched the
681 certificate chain.
682 This error is only possible in L<openssl-s_client(1)>.
683
684 =item B<X509_V_ERR_EE_KEY_TOO_SMALL>
685
686 EE certificate key too weak.
687
688 =item B<X509_ERR_CA_KEY_TOO_SMALL>
689
690 CA certificate key too weak.
691
692 =item B<X509_ERR_CA_MD_TOO_WEAK>
693
694 CA signature digest algorithm too weak.
695
696 =item B<X509_V_ERR_INVALID_CALL>
697
698 nvalid certificate verification context.
699
700 =item B<X509_V_ERR_STORE_LOOKUP>
701
702 Issuer certificate lookup error.
703
704 =item B<X509_V_ERR_NO_VALID_SCTS>
705
706 Certificate Transparency required, but no valid SCTs found.
707
708 =item B<X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION>
709
710 Proxy subject name violation.
711
712 =item B<X509_V_ERR_OCSP_VERIFY_NEEDED>
713
714 Returned by the verify callback to indicate an OCSP verification is needed.
715
716 =item B<X509_V_ERR_OCSP_VERIFY_FAILED>
717
718 Returned by the verify callback to indicate OCSP verification failed.
719
720 =item B<X509_V_ERR_OCSP_CERT_UNKNOWN>
721
722 Returned by the verify callback to indicate that the certificate is not recognized
723 by the OCSP responder.
724
725 =back
726
727 =head1 BUGS
728
729 Although the issuer checks are a considerable improvement over the old
730 technique they still suffer from limitations in the underlying X509_LOOKUP
731 API. One consequence of this is that trusted certificates with matching
732 subject name must either appear in a file (as specified by the B<-CAfile>
733 option), a directory (as specified by B<-CApath>), or a store (as specified
734 by B<-CAstore>). If they occur in more than one location then only the
735 certificates in the file will be recognised.
736
737 Previous versions of OpenSSL assume certificates with matching subject
738 name are identical and mishandled them.
739
740 Previous versions of this documentation swapped the meaning of the
741 B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT> and
742 B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY> error codes.
743
744 =head1 SEE ALSO
745
746 L<openssl(1)>,
747 L<openssl-x509(1)>,
748 L<ossl_store-file(7)>
749
750 =head1 HISTORY
751
752 The B<-show_chain> option was added in OpenSSL 1.1.0.
753
754 The B<-issuer_checks> option is deprecated as of OpenSSL 1.1.0 and
755 is silently ignored.
756
757 The B<-sm2-id> and B<-sm2-hex-id> options were added in OpenSSL 3.0.
758
759 =head1 COPYRIGHT
760
761 Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
762
763 Licensed under the Apache License 2.0 (the "License").  You may not use
764 this file except in compliance with the License.  You can obtain a copy
765 in the file LICENSE in the source distribution or at
766 L<https://www.openssl.org/source/license.html>.
767
768 =cut