'Client discontinues the SSL Handshake if Client Certificate is requested (Certificate Request)
I've configured Client Certificate verification in my Nginx server with the most loose restrictions possible
...
ssl_verify_client optional_no_ca
ssl_trusted_certificate <cert_file> -> So that, expected certificate list won't be sent by the server during SSL handshake.
...
And once the request arrives in Nginx, based on the location, I will use ssl_client_verify
result to allow/deny the request.
But a client connecting to my server drops the SSL handshake, after the Certificate Request
step
The TLS 1.1 protocol says
If no suitable certificate is available, the client SHOULD send a certificate message containing no certificates.
But my client just drops the request. The following is the Certificate Request stuff being sent now.
TLSv1.2 Record Layer: Handshake Protocol: Certificate Request
Content Type: Handshake (22)
Version: TLS 1.2 (0x0303)
Length: 58
Handshake Protocol: Certificate Request
Handshake Type: Certificate Request (13)
Length: 54
Certificate types count: 3
Certificate types (3 types)
Certificate type: RSA Sign (1)
Certificate type: DSS Sign (2)
Certificate type: ECDSA Sign (64)
Signature Hash Algorithms Length: 46
Signature Hash Algorithms (23 algorithms)
Signature Algorithm: ecdsa_secp256r1_sha256 (0x0403)
Signature Algorithm: ecdsa_secp384r1_sha384 (ex0503)
Signature Algorithm: ecdsa_secp521r1 _sha512 (ex0603)
Signature Algorithm: ed25519 (0x0807)
Signature Algorithm: ed448 (0x0808)
Signature Algorithm: rsa_pss_pss_sha256(0x0809)
Signature Algorithm: rsa_pss_pss_sha384(0x080a)
Signature Algorithm: rsa_pss_pss_sha512(0x080b)
Signature Algorithm: rsa_pss_rsae_sha256(0x0804)
Signature Algorithm: rsa_pss_rsae_sha384(8x0805)
Signature Algorithm: rsa_pss_rsae_sha512(0x0806)
Signature Algorithm: rsa_pkcs1_sha256 (0x0401)
Signature Algorithm: rsapkcs1 sha384 (0x0501)
Signature Algorithm: rsapkcs1_sha512 (0x0601)
Signature Algorithm: SHA224 ECDSA (0x0303)
Signature Algorithm: ecdsa_sha1 (0x0203)
Signature Algorithm: SHA224 RSA (0x0301)
Signature Algorithm: rsa_pkcs1 _sha1 (0x0201)
Signature Algorithm: SHA224 DA (0x0302)
Signature Algorithm: SHA1 DA (0x0202)
Signature Algorithm: SHA256 DSA (0x0402)
Signature Algorithm: SHA384 DA (0x0502)
Signature Algorithm: SHA512 DA (0x0602)
Distinguished Names Length: 0
Is there anything I can configure in Nginx to get the client to communicate? I guess you might need more info to help me, so please ask! I'll provide you with whatever you need. Any help you can provide on this would be hugely appreciated. Thanks in advance.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|