On Wed, Jun 7, 2023 at 9:41 PM Yoav Weiss <yoavwe...@chromium.org> wrote:

> Thanks for working on this!
>
> On Wed, Jun 7, 2023 at 11:44 PM Chris Thompson <cth...@chromium.org>
> wrote:
>
>> Thanks all. Some updates:
>>
>>    - We have filed a TAG review request
>>    <https://github.com/w3ctag/design-reviews/issues/853>
>>    - We are working on writing WPTs and we will update this thread when
>>    those are ready -- thanks for the added details about how those are run
>>    - We have added a `Non-Authoritative-Reason: HttpsUpgrades` header to
>>    the synthetic redirects (CL
>>    <https://chromium-review.googlesource.com/c/chromium/src/+/4584420>,
>>    which we are planning to merge back to M-115)
>>    - We are continuing to iterate on the spec PR
>>
>> For now we will continue to provide updates on this I2S -- closer to M115
>> going to Stable we may send an I2E to request the ability to proceed with a
>> 1% Stable experiment if we have not yet been able to resolve everything
>> here.
>>
>> @Harald Alvestrand <h...@google.com> : In general, this feature should
>> work fine with captive portals. A captive portal that intercepts HTTPS
>> connections will result in a certificate error, which will cause the
>> upgrade to fail and automatically fall back to HTTP. Alternatively, the
>> captive portal could reset the connection for HTTPS requests, which would
>> accomplish the same.
>>
>> We have had one report of a middlebox that returned an HTTP 404 error
>> over HTTPS instead of rejecting the connection, causing breakage (the
>> upgraded HTTPS page would load but have useless content). We do not believe
>> the browser should fallback on *application* level errors, as they do
>> not provide a useful signal that the site does not support HTTPS -- in the
>> vast majority of cases the same application error will occur over HTTP as
>> well. (This specific case was an enterprise situation, with an enterprise
>> installed root certificate making the middlebox's HTTPS work, and we have
>> enterprise policies to allow organizations to disable upgrades for affected
>> hosts.)
>>
>
> What's our plan to tackle such issues? Do we have an enterprise policy in
> place?
>
>

We have two enterprise policies for this feature:

   - HttpsUpgradesEnabled
   <https://chromeenterprise.google/policies/#HttpsUpgradesEnabled> can be
   used to disable this feature on managed clients (we have a similar policy
   <https://chromeenterprise.google/policies/#HttpsOnlyMode> for Chrome's
   HTTPS-First Mode, i.e. the opt-in "Always use secure connections" setting)
   - HttpAllowlist
<https://chromeenterprise.google/policies/#HttpAllowlist> can
   be used to allowlist hostnames or hostname patterns -- these will then not
   be upgraded on managed clients (this also applies to HTTPS-First Mode)

There are two "escape hatches" for users who encounter breakage and need to
fall back to HTTP, although from prior measurement we expect this to be
rare:

   - If the user explicitly types an "http://"; URL into the Omnibox (with
   the scheme), we skip upgrading that navigation and add the host to the
   allowlist.
   - If the user sets the "Insecure Content" content setting
   (chrome://settings/content/insecureContent) to "Allowed" for the site, then
   we skip upgrading navigations. (This setting also disables mixed content
   autoupgrading
   <https://w3c.github.io/webappsec-mixed-content/level2.html#upgrade-algorithm>
--
   for HTTPS Upgrades and HTTPS-First Mode we rely on Mixed Content Level 2 to
   ensure no plaintext subresource requests are sent.)



>
>>
>>
>> On Wed, Jun 7, 2023 at 1:02 AM Harald Alvestrand <h...@google.com> wrote:
>>
>>> How will this affect login to captive portals (WiFi login), which
>>> frequently rely on rewriting HTTP requests?
>>>
>>>
>>> On Tue, Jun 6, 2023 at 12:00 AM 'Panos Astithas' via blink-dev <
>>> blink-dev@chromium.org> wrote:
>>>
>>>> On Wed, May 31, 2023 at 7:31 AM Mike West <mk...@google.com> wrote:
>>>>
>>>>>
>>>>> -mike
>>>>>
>>>>>
>>>>> On Wed, May 31, 2023 at 4:17 PM Rick Byers <rby...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>> As a long-time user of HTTPS-first mode, I'm excited to see this ship
>>>>>> ASAP!
>>>>>>
>>>>>> On Wed, May 31, 2023, 5:29 a.m. 'Mike West' via blink-dev <
>>>>>> blink-dev@chromium.org> wrote:
>>>>>>
>>>>>>> On Fri, May 26, 2023 at 1:32 AM Chris Thompson <cth...@chromium.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On Thu, May 25, 2023 at 3:36 AM Mike West <mk...@chromium.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I am enthusiastic about this (and not just because it should allow
>>>>>>>>> us to deprecate/remove `Upgrade-Insecure-Requests`). A few comments 
>>>>>>>>> inline:
>>>>>>>>>
>>>>>>>>> On Thu, May 25, 2023 at 1:13 AM Chris Thompson <
>>>>>>>>> cth...@chromium.org> wrote:
>>>>>>>>>
>>>>>>>>>> Contact emailscth...@chromium.org, dadr...@google.com
>>>>>>>>>>
>>>>>>>>>> Explainer
>>>>>>>>>> https://github.com/dadrian/https-upgrade/blob/main/explainer.md
>>>>>>>>>>
>>>>>>>>>> Specificationhttps://github.com/whatwg/fetch/pull/1655
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks for putting this together! I'll leave some comments on the
>>>>>>>>> PR. Given that we haven't gotten any feedback from Fetch editors, it 
>>>>>>>>> might
>>>>>>>>> be prudent to let them take a pass before locking in our current 
>>>>>>>>> behavior.
>>>>>>>>>
>>>>>>>>
>>>>>>>>  Yes, hopefully we can get some feedback, but I'm optimistic that
>>>>>>>> we won't be locking in behavior if we ship this as it should hopefully 
>>>>>>>> be
>>>>>>>> not site or user visible, so if we need to change the behavior to align
>>>>>>>> cross-browser we can iterate.
>>>>>>>>
>>>>>>>
>>>>>>> I left a few comments last week. I think the PR needs some work
>>>>>>> before we can reasonably expect it to land in Fetch.
>>>>>>>
>>>>>>
> I agree (and left a few comments of my own). Would it be possible to make
> some progress on this? Once the comments are addressed and we feel good
> about the PR's state, could we use the Mozilla position as support and
> publish the PR for review? (It's currently marked as a draft, which may
> explain why it wasn't reviewed by Fetch editors)
>
>
>>
>>>>>>> Do we have tests in place for this behavior in Web Platform Tests?
>>>>>>>>> https://wpt.fyi/results/mixed-content/tentative/autoupgrades?label=experimental&label=master&aligned
>>>>>>>>> holds some tests for subresources, but I didn't see any around
>>>>>>>>> navigation or fallback behavior (which seems like it might need some 
>>>>>>>>> WPT
>>>>>>>>> infrastructure change to produce a domain that's only served over 
>>>>>>>>> HTTP).
>>>>>>>>>
>>>>>>>>
>>>>>>>> We do not have Web Platform Tests but we can look into adding them.
>>>>>>>> Currently this is implemented in //chrome which I think might make this
>>>>>>>> more difficult (my understanding is that the WPT suite is run against
>>>>>>>> content_shell rather than chrome).  We are currently relying on browser
>>>>>>>> tests for our integration testing.
>>>>>>>>
>>>>>>>
>>>>>>> WPT is a pretty important part of shipping features that affect the
>>>>>>> platform. It would be ideal if we could share these tests with our 
>>>>>>> friends
>>>>>>> at other vendors (and update existing tests that might be expecting
>>>>>>> different behavior). Shifting the implementation to //content to make 
>>>>>>> that
>>>>>>> possible would also have the advantage of helping other Chromium 
>>>>>>> embedders
>>>>>>> ship this feature, which would be excellent for consistency in the 
>>>>>>> project.
>>>>>>>
>>>>>>
>>>>>> Note that the official WPT results on wpt.fyi are using full Chrome
>>>>>> builds. IIRC there are other features that require Chrome. I  personally
>>>>>> only consider having WPTs passing on upstream infra to be blocking I2S. 
>>>>>> @Panos
>>>>>> Astithas <pastit...@google.com> can say more authoritatively.
>>>>>>
>>>>>
>>>> Indeed, upstream WPT results use full Chrome (and Firefox, Safari,
>>>> etc.) through wptrunner. Soon, this will also be the case when running WPT
>>>> in Chromium CI on Linux, once some blockers have been resolved.
>>>>
>>>> Panos
>>>>
>>>> +1 to the benefits of having this in content, but I personally think
>>>>>> that's outside the scope of API owners so not something that should block
>>>>>> an I2S.
>>>>>>
>>>>>
>>>>> I agree with this. I didn't mean to imply that //content
>>>>> implementation was necessary, but that _having_ web platform tests is
>>>>> important for interop. Browser tests are less useful in that regard. :)
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>> Summary
>>>>>>>>>>
>>>>>>>>>> Automatically and optimistically upgrade all main-frame
>>>>>>>>>> navigations to HTTPS, with fast fallback to HTTP.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Blink componentInternals>Network>SSL
>>>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3ENetwork%3ESSL>
>>>>>>>>>>
>>>>>>>>>> TAG reviewFetch change process does not mention a TAG review,
>>>>>>>>>> therefore this is N/A (
>>>>>>>>>> https://github.com/whatwg/fetch#pull-requests)
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Blink's process does mention a TAG review. I think it would be a
>>>>>>>>> good idea to put this in front of them. I also think they will 
>>>>>>>>> appreciate
>>>>>>>>> it, since it's directly in line with their previous guidance (e.g.
>>>>>>>>> https://www.w3.org/2001/tag/doc/web-https).
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> Sure, we can file a TAG review. I'll update this thread once that's
>>>>>>>> done.
>>>>>>>>
>>>>>>>>
>>>>>>>>> TAG review statusNot applicable
>>>>>>>>>>
>>>>>>>>>> Risks
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Interoperability and Compatibility
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Gecko*: Positive (
>>>>>>>>>> https://github.com/mozilla/standards-positions/issues/800)
>>>>>>>>>> Firefox is offering a similar feature already in their private 
>>>>>>>>>> browsing
>>>>>>>>>> mode by default
>>>>>>>>>>
>>>>>>>>>> *WebKit*: No signal (
>>>>>>>>>> https://github.com/WebKit/standards-positions/issues/185)
>>>>>>>>>>
>>>>>>>>>> *Web developers*: No signals. This feature is not exposed
>>>>>>>>>> directly to web developers or users. However, HTTPS adoption is now
>>>>>>>>>> standard practice (>90% of page loads in Chrome use HTTPS), and
>>>>>>>>>> automatically upgrading navigations to HTTPS would avoid unnecessary
>>>>>>>>>> redirects from HTTP to HTTPS for site owners. The
>>>>>>>>>> `upgrade-insecure-requests` header has some similar functionality, 
>>>>>>>>>> and
>>>>>>>>>> according to HTTP-Archive is found on ~6% of all requests.
>>>>>>>>>>
>>>>>>>>>> *Other signals*:
>>>>>>>>>>
>>>>>>>>>> WebView application risks
>>>>>>>>>>
>>>>>>>>>> Does this intent deprecate or change behavior of existing APIs,
>>>>>>>>>> such that it has potentially high risk for Android WebView-based
>>>>>>>>>> applications?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Debuggability
>>>>>>>>>>
>>>>>>>>>> Chrome will upgrade these navigations to HTTPS using a 307
>>>>>>>>>> internal redirect, which will be visible in the Network panel of 
>>>>>>>>>> Developer
>>>>>>>>>> Tools.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> For HSTS, we synthesize a `Non-Authoritative-Reason` header on the
>>>>>>>>> synthetic redirect that tells developers why the redirect happened. 
>>>>>>>>> Is that
>>>>>>>>> a pattern y'all will follow here as well? If so, it's probably a good 
>>>>>>>>> idea
>>>>>>>>> to document it somewhere; I don't think we've explained that header 
>>>>>>>>> well. :)
>>>>>>>>>
>>>>>>>>
>>>>>>>> Good idea. I'll get a CL up to add this to our implementation, and
>>>>>>>> it seems reasonable to merge back to M115. We can include a mention of 
>>>>>>>> it
>>>>>>>> in any public facing documentation we write about this. I'm also 
>>>>>>>> looking
>>>>>>>> into whether we can add NetLog events for the upgrade and fallback 
>>>>>>>> steps
>>>>>>>> which could help with triaging bug reports.
>>>>>>>>
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>> Will this feature be supported on all six Blink platforms (Windows,
>>>>>>>>>> Mac, Linux, Chrome OS, Android, and Android WebView)?No
>>>>>>>>>>
>>>>>>>>>> Currently not available on Android WebView. We are implementing
>>>>>>>>>> this first for Chrome and will consider bringing this to WebView 
>>>>>>>>>> (likely as
>>>>>>>>>> an embedder opt-in) as follow up work.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Is this feature fully tested by web-platform-tests
>>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>>>>>>>> ?No
>>>>>>>>>>
>>>>>>>>>> Flag namehttps-upgrades
>>>>>>>>>>
>>>>>>>>>> Requires code in //chrome?True
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Can you spell out what's required here? Just enterprise policy
>>>>>>>>> work, or are there other things embedders would need to implement to 
>>>>>>>>> make
>>>>>>>>> this functionality work?
>>>>>>>>>
>>>>>>>>
>>>>>>>> This feature is currently implemented in //chrome with some support
>>>>>>>> code in content/'s NavigationRequest. I think it would be feasible to
>>>>>>>> migrate the core of this into content/ -- we use an
>>>>>>>> URLRequestLoaderInterceptor and a NavigationThrottle to implement the
>>>>>>>> upgrading and fallback logic. This is currently shared with Chrome's
>>>>>>>> HTTPS-First Mode (controlled by Chrome's "Always use secure 
>>>>>>>> connections"
>>>>>>>> setting). If we did migrate this logic to content/, embedders would 
>>>>>>>> need to
>>>>>>>> add their own support for at least (1) how to handle allowlisting
>>>>>>>> hostnames, and (2) enterprise policies for enabling/disabling the 
>>>>>>>> feature
>>>>>>>> and exempting hostnames. We do not have a design ready for making this
>>>>>>>> change though.
>>>>>>>>
>>>>>>>
>>>>>>> As mentioned above, it would be ideal for the pieces of this change
>>>>>>> that affect the platform to be available in //content so they flow into
>>>>>>> content_shell and other embedders.
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Tracking bug
>>>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1394910
>>>>>>>>>>
>>>>>>>>>> Launch bughttps://launch.corp.google.com/launch/4235192
>>>>>>>>>>
>>>>>>>>>> Sample links
>>>>>>>>>> http://example.com will upgrade to https://example.com.
>>>>>>>>>> http://www.alwayshttp.com will upgrade to
>>>>>>>>>> https://www.alwayshttp.com but fall back to
>>>>>>>>>> http://www.alwayshttp.com because the site doesn't support HTTPS.
>>>>>>>>>>
>>>>>>>>>> Estimated milestones
>>>>>>>>>> Shipping on desktop 115
>>>>>>>>>> Shipping on Android 115
>>>>>>>>>>
>>>>>>>>>> We are planning to do a field trial to gradually roll out this
>>>>>>>>>> feature to Chrome clients in Chrome 115.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Over what time period do you expect to ramp up to 100%? If you
>>>>>>>>> expect it to push beyond the M115 timeframe, it might be reasonable to
>>>>>>>>> frame this as an intent to experiment to give folks a little more 
>>>>>>>>> time to
>>>>>>>>> weigh in on the Fetch PR.
>>>>>>>>>
>>>>>>>>>
>>>>>>>> We are hoping to ramp up to 100% within M115, but it may end up
>>>>>>>> completing in M116.
>>>>>>>>
>>>>>>>> (We could do an I2E, but it did not seem like a good fit as there
>>>>>>>> is no Origin Trial component, this does not require developer 
>>>>>>>> involvement,
>>>>>>>> etc. Our understanding was even doing a non-OT 1% Stable rollout 
>>>>>>>> required
>>>>>>>> sending an I2S and getting LGTMs from API OWNERS. Let us know if you 
>>>>>>>> think
>>>>>>>> we should reassess our launch plan.)
>>>>>>>>
>>>>>>>
>>>>>>> We do have an experimentation path for running a Finch experiment on
>>>>>>> stable/beta users (confusingly(?) under "Origin Trial"
>>>>>>> <https://www.chromium.org/blink/launching-features/#:~:text=Depending%20on%20your,required%20before%20proceeding.>
>>>>>>> in our documentation; we could probably improve that).
>>>>>>>
>>>>>>> I think I'd recommend that path to avoid any delays that might come
>>>>>>> up in getting Fetch updated to support this feature. I'd LGTM an I2E @ 
>>>>>>> 50%
>>>>>>> beta/1% stable to gain confidence in the fallback mechanism at scale. 
>>>>>>> For
>>>>>>> I2S, I'm a little worried about the state of the spec and its eventual
>>>>>>> interoperability across vendors. I'd like to get that hammered down 
>>>>>>> before
>>>>>>> making it harder to change details that developers might come to rely 
>>>>>>> upon.
>>>>>>>
>>>>>>> -mike
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> Anticipated spec changes
>>>>>>>>>>
>>>>>>>>>> Open questions about a feature may be a source of future web
>>>>>>>>>> compat or interop issues. Please list open issues (e.g. links to 
>>>>>>>>>> known
>>>>>>>>>> github issues in the project for the feature specification) whose
>>>>>>>>>> resolution may introduce web compat/interop risk (e.g., changing to 
>>>>>>>>>> naming
>>>>>>>>>> or structure of the API in a non-backward-compatible way).
>>>>>>>>>> https://github.com/whatwg/fetch/pull/1655
>>>>>>>>>>
>>>>>>>>>> Link to entry on the Chrome Platform Status
>>>>>>>>>> https://chromestatus.com/feature/6056181032812544
>>>>>>>>>>
>>>>>>>>>> Links to previous Intent discussionsIntent to prototype:
>>>>>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/mgJqym5-Xek/m/0EAN6v7CCQAJ
>>>>>>>>>>
>>>>>>>>>> This intent message was generated by Chrome Platform Status
>>>>>>>>>> <https://chromestatus.com/>.
>>>>>>>>>>
>>>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "blink-dev" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to blink-dev+unsubscr...@chromium.org.
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXHy%3DdPs5Spya9QBVmFYdeTJevs6jML%3DNmU7SEApOshNRmHCg%40mail.gmail.com
>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXHy%3DdPs5Spya9QBVmFYdeTJevs6jML%3DNmU7SEApOshNRmHCg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "blink-dev" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to blink-dev+unsubscr...@chromium.org.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJ8Nf20mYRwXxCjadR5MuQ5DPj7nHa6MGEkFe5576W1tZ8MkPQ%40mail.gmail.com
>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJ8Nf20mYRwXxCjadR5MuQ5DPj7nHa6MGEkFe5576W1tZ8MkPQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>> You received this message because you are subscribed to the Google Groups
>> "blink-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to blink-dev+unsubscr...@chromium.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALMy46Q--Fj9qV%3D28_CY9au4h-Gc%3D3dYWPFNeT1g-wdmQxEvSQ%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALMy46Q--Fj9qV%3D28_CY9au4h-Gc%3D3dYWPFNeT1g-wdmQxEvSQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALMy46Sqzr12i6xeSS8whDWfVVRU%3DLgH_m%2B3QO2Qj0N9hNpAag%40mail.gmail.com.

Reply via email to