[Webkit-unassigned] [Bug 187611] New: [Curl] Fix implementation error in handling Certificate exceptions.
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Jul 12 11:57:20 PDT 2018
https://bugs.webkit.org/show_bug.cgi?id=187611
Bug ID: 187611
Summary: [Curl] Fix implementation error in handling
Certificate exceptions.
Product: WebKit
Version: WebKit Nightly Build
Hardware: Unspecified
OS: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: Platform
Assignee: webkit-unassigned at lists.webkit.org
Reporter: Basuke.Suzuki at sony.com
Current interface for TLS certificate validation for Curl port are as follows:
WEBCORE_EXPORT void setHostAllowsAnyHTTPSCertificate(const String&);
bool isAllowedHTTPSCertificateHost(const String&);
bool canIgnoredHTTPSCertificate(const String&, const Vector<CertificateInfo::Certificate>&);
First one registers a host to be ignored for any certificate check. Once it is registered, no further certificate validation check is executed.
Second one checks the host is registered in the list above.
Third one is weird. The method signature implies it checks the certificate for the host and detect whether we can ignore this certificate for the host, but actually it just check only the host and register the certificate into the vector. Then in the next request for the host, the certificate will be checked with the previously stored certificate.
It's hard to understand, but in short,
- We can register a host as an exception for TLS certificate validation.
- But only certificate arrived first is ignored, not all certificates for the host (which is rare, but possible for mis configured web cluster).
This behavior is incomplete and more over it is very different from other ports.
This should be changed following other ports:
- allowSpecificHTTPSCertificateForHost(const CertificateInfo& certificateInfo, const String& host)
- canIgnoreSpecificHTTPSCertificateForHost(const CertificateInfo& certificateInfo, const String& host)
(actually check its certificates against registered certificates for the host)
This will be used for standard SSL error interface such as: "Do you allow this certificates for host?" checkbox in the SSL error dialog.
Also for the original purpose to ignore ALL certificates of the host:
- allowAllHTTPSCertificatesForHost(const String& host)
- canIgnoreAllHTTPSCertificatesForHost(const String& host)
This is required to access to the host which has different SNI name in the certificates in our platform.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20180712/b46540d4/attachment.html>
More information about the webkit-unassigned
mailing list