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