Quantcast

Regarding SSL_VERIFY_PEER

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Regarding SSL_VERIFY_PEER

john gloster
Hi,

I needed to validate different extensions of each of the Issuer certificate in the chain.


"The certificate chain is checked starting with the deepest nesting level (the root CA certificate) and worked upward to the peer's certificate. At each level signatures and issuer attributes are checked. "

When we say "issuer attributes", could someone let me know what different stuffs in the CA certificate are validated?


Thanks in advance.

John.

--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Regarding SSL_VERIFY_PEER

Viktor Dukhovni

> On May 3, 2017, at 5:58 AM, john gloster <[hidden email]> wrote:
>
> Hi,
>
> I needed to validate different extensions of each of the Issuer certificate in the chain.
>
> Snippet rom https://linux.die.net/man/3/ssl_set_verify:
>
> "The certificate chain is checked starting with the deepest nesting level (the root CA certificate) and worked upward to the peer's certificate. At each level signatures and issuer attributes are checked. "
>
> When we say "issuer attributes", could someone let me know what different stuffs in the CA certificate are validated?

For the full verification process see:

   https://github.com/openssl/openssl/blob/f0ef20bf386b5c37ba5a4ce5c1de9a819bbeffb2/crypto/x509/x509_vfy.c#L208

which happens after checking that the peer's key meets the required security level at:

   https://github.com/openssl/openssl/blob/f0ef20bf386b5c37ba5a4ce5c1de9a819bbeffb2/crypto/x509/x509_vfy.c#L286

The specific chain checks you may be thinking of are:

   https://github.com/openssl/openssl/blob/f0ef20bf386b5c37ba5a4ce5c1de9a819bbeffb2/crypto/x509/x509_vfy.c#L448

--
        Viktor.

--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Regarding SSL_VERIFY_PEER

Michael Wojcik
> From: openssl-users [mailto:[hidden email]] On Behalf
> Of Viktor Dukhovni
> Sent: Wednesday, May 03, 2017 06:40
>
> For the full verification process see:
>
>
> https://github.com/openssl/openssl/blob/f0ef20bf386b5c37ba5a4ce5c1de9a
> 819bbeffb2/crypto/x509/x509_vfy.c#L208

I haven't looked at x509_vfy.c in 1.1.0, but in the 1.0.x code it's fairly involved. When I implemented custom chain validation for a product, I stepped through the code under the debugger for a handful of different cases, to get a better idea of what it was doing. I recommend the exercise for anyone who wants to intervene in OpenSSL's chain validation.

My custom validation code uses the OpenSSL validation callback, making some additional checks and allowing some exceptions, based on application configuration. I assume John is doing something similar, and not trying to implement chain validation from scratch. I definitely wouldn't recommend that, given the Byzantine complexity of X.509v3 PKI, unless you really must (e.g. because you want a non-hierarchical PKI topology).

Michael Wojcik
Distinguished Engineer, Micro Focus


--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Regarding SSL_VERIFY_PEER

john gloster

Hi Victor and Michael,

 

Thanks for your respective response.

 

I need to make sure the following validation happens.

  • subject field in one certificate matches with the issuer field in the subsequent certificate
  • no duplicate certificate in the chain
  • basicConstraints : for CA certificate CA must be set to TRUE

                                 pathLenConstraints – checking as per RFC5280; I want to check even to see no CA with pathLen set 0 is Issuer of another CA certificate

  • validity period check
  • revocation status check
  • keyUsage : Eg. to make sure keyCertSign indicator set for the CA certificates in the chain
  • Criticality check
  • Signature validation

 

As per RFC5280, subjectKeyIdentifier and authorityKeyIdentifier matching is not required to be done by application.

Section 4.2.1.2.

“Applications are not required to verify that key identifiers match when performing

certification path validation.”

 

 

Is it possible to let me know what all from the BULLETED are validated at OpenSSL level? We are using 1.0.2k

This helps in saving my time required for debugging.

 

Thanks,

John 


On Wed, May 3, 2017 at 9:57 PM, Michael Wojcik <[hidden email]> wrote:
> From: openssl-users [mailto:[hidden email]] On Behalf
> Of Viktor Dukhovni
> Sent: Wednesday, May 03, 2017 06:40
>
> For the full verification process see:
>
>
> https://github.com/openssl/openssl/blob/f0ef20bf386b5c37ba5a4ce5c1de9a
> 819bbeffb2/crypto/x509/x509_vfy.c#L208

I haven't looked at x509_vfy.c in 1.1.0, but in the 1.0.x code it's fairly involved. When I implemented custom chain validation for a product, I stepped through the code under the debugger for a handful of different cases, to get a better idea of what it was doing. I recommend the exercise for anyone who wants to intervene in OpenSSL's chain validation.

My custom validation code uses the OpenSSL validation callback, making some additional checks and allowing some exceptions, based on application configuration. I assume John is doing something similar, and not trying to implement chain validation from scratch. I definitely wouldn't recommend that, given the Byzantine complexity of X.509v3 PKI, unless you really must (e.g. because you want a non-hierarchical PKI topology).

Michael Wojcik
Distinguished Engineer, Micro Focus


--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users


--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users
Loading...