Firefox Accepts Certificate with Key Usage: Key Encipherment, While Chrome Rejects It
Categories
(Core :: Security: PSM, defect)
Tracking
()
People
(Reporter: 2295456556, Unassigned)
Details
Attachments
(7 files)
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0
Steps to reproduce:
1.Generating a mutated digital certificate with an additional Subject Alternative Name (SAN) of "ypj.test.com", along with its corresponding root CA and private key.
2.Configuring an Nginx web server to use the mutated certificate and private key in HTTPS mode.
3.Setting up the local machine (127.0.0.1) as the server and mapping "ypj.test.com" to 127.0.0.1 in the hosts file.
4.Adding the root CA to the system's trusted root certificate store using certutil.
5.Running nginx.exe. Accessing the URL "https://ypj.test.com:443" in a web browser, where the certificate's SAN matches the URL.
Firefox-version-113.0
Actual results:
Firefox accepts a terminal certificate with key usage set to "Key Encipherment", whereas Chrome rejects the same certificate and displays the error "ERR_SSL_KEY_USAGE_INCOMPATIBLE".
Key Encipherment is typically used for encrypting key exchanges rather than for server authentication. Accepting such a certificate could mean that Firefox allows the use of non-standard certificates, thereby increasing security risks. Additionally, users switching between different browsers may encounter inconsistent behavior, which could lead to user confusion and undermine trust in the browser's reliability.
Expected results:
Both Firefox and Chrome should consistently handle the terminal certificate. Ideally, if the certificate is not suitable according to the standards, both browsers should reject it or provide a clear and consistent error message.
| Reporter | ||
Comment 1•1 year ago
|
||
| Reporter | ||
Comment 2•1 year ago
|
||
| Reporter | ||
Comment 3•1 year ago
|
||
| Reporter | ||
Comment 4•1 year ago
|
||
| Reporter | ||
Comment 5•1 year ago
|
||
| Reporter | ||
Comment 6•1 year ago
|
||
| Reporter | ||
Comment 7•1 year ago
|
||
Comment 8•1 year ago
|
||
This is essentially bug 970760. Incidentally, the baseline requirements section 7.1.2.7.11 states that for RSA public keys, "the keyEncipherment bit MAY be asserted to support older protocols, such as TLS 1.2, when using insecure ciphersuites."
Description
•