Internet-Draft | Requirements for HTTPS for Local Domains | March 2025 |
Wing, et al. | Expires 4 September 2025 | [Page] |
When connecting to servers on their local network, users are surprised to encounter user interfaces that display errors, show insecure connections, and block some HTTP features when missing a secure context. However, obtaining PKIX certificates for those servers is difficult for a variety of reasons.¶
This document explores requirements for authenticating local servers.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at https://danwing.github.io/settle-requirements/draft-wing-settle-requirements.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-wing-settle-requirements/.¶
Discussion of this document takes place on the SETTLE mailing list (mailto:settle@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/settle/. Subscribe at https://www.ietf.org/mailman/listinfo/settle/.¶
Source for this draft and an issue tracker can be found at https://github.com/danwing/settle-requirements.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 4 September 2025.¶
Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Servers on local networks have historically settled for unencrypted communications -- printers, routers, network attached storage (NAS). However, with the advent of HTTPS everywhere [everywhere], browsers disadvantage unencrypted communications (e.g., [not-secure], [sec-context]). This increases importance of a secure context (HTTPS) to local domains.¶
In addition, it is recognized that home networks are not (and perhaps have never been) the idyllic secure gardens that many think they are. There are persistent threats in the home due to malware on devices within the home, as well as malware that might arrive on guest devices. Most home networks have little protection against various kinds of (layer-2) spoofing attacks, which means that active on-path attacks (MITM) must be assumed. Securing the administrative and regular connections within the home network would result in significant security gains for all devices in the home.¶
Today, a secure context is obtained with a PKIX certificate ([RFC5280]) signed by a Certification Authority (CA) that is trusted by the client.¶
However, servers on a local network cannot easily get PKIX certificates signed by a Certification Authority because: they are not directly reachable from the outside (due to firewall or NAPT), lack of domain name delegation, and need for ongoing certificate renewal.¶
The problem has been well recognized since about 2017 and several proposals have been suggested to solve this problem, each with their own drawbacks. This document is not intended to summarize these proposals or their drawbacks; for that detail see the pointers to previous work in Section 7. At a high level, the proposals have involved solutions such as:¶
pre-shared secrets (scanned, printed, or displayed by the server)¶
Public DNS pointing at local domain's IP address (e.g., [plex])¶
Local Certification Authority, where a CA is added to client's certificate trust list and that CA signs certificates for devices within the local network¶
Trust On First Use (TOFU), where a user verifies the first connection to a server and the client remembers that verification, similar to common use of ssh¶
WebRTC and WebTransport, where a PKI-signed server provides a public key fingerprint of another server that it has previously bootstrapped¶
Encoding server's public key into the hostname [thomson-hld]¶
This document explores IETF requirements for an alternative server authentication system for local hosts.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The goal is to work out the engineering tradeoff around [zookotriangle]. Specifically it says there are three aspects that must be traded off:¶
PKIX certificates are a centralized naming scheme derived from DNS. These names have (the possibility of) having human-readable names. But the most significant property is uniqueness -- each name has its own identity and that identity can be proven.¶
A system that does not rely on centralized naming lacks this inherient uniqueness property.¶
Without a centralized naming scheme, name collisions are possible and likely. For example, it is likely that many networks will have a printer named, simply, "printer", much like many people might share a common name such as "John". Humans prefer simple, human-readable names, but a strong identity cannot be created with such names.¶
Two networks both have a printer named "printer", they are indistinguishable. This would not be as much of a problem were personal devices not mobile. A person's smartphone could easily visit my networks on which there is a device named "printer", and the user might well wish to actually use those printers. At the time time, if those names are not secured, then a simple attack against the user is possible, leading to them printing to a malicious device. Worse, if there are symmetric credentials (such as passwords) involved, then the user might well disclose their password to the attacker. This would be unacceptable.¶
R-UNIQUE-NAME: The system MUST have a way to uniquely identify servers.¶
A server's name has to be mapped to its cryptographic identity.¶
R-BINDING: The Web Origin MUST be cryptographically bound to one or more key pairs, where the private keying material is on the service endpoint and where an attacker without the private key(s) is unable to access any state associated with the Web Origin.¶
A client has to be able to validate the name maps to the cryptographic identity.¶
R-VALIDATE: Clients MUST be able to cryptographically validate that the authenticating server matches the identity in the URI / Web Origin.¶
Web browsers and modern users both expect a URI.¶
R-URI: It MUST be possible to construct a URI that encapsulates a Web Origin and its cryptographically-bound identity information.¶
Using IP addresses in names is problematic if the server's IP address changes due to ISP renumbering or internal network DHCP server reconfiguration.¶
Given common NAT44 (NAPT), many many networks will share the same IPv4 addresses.¶
R-ABSTRACT: The solution SHOULD abstract names from IP addresses.¶
Any given name should be resolvable to a mixture of IPv4, IPv6 Link-Local (on an Interface), IPv6 ULA, and IPv6 Globally-Routable addresses. Operating a local DNS is beyond the scope of many administrators, so being able to advertise the server using [DNS-SD] is necessary.¶
R-HTTPS: A solution MUST support HTTPS.¶
R-AGILITY: A solution SHOULD support crypto agility (such as supporting more than one active key type).¶
R-TLS-SNI: A solution SHOULD support TLS SNI so a server knows which key pair/cert is expected.¶
R-LOCALHOST: A solution SHOULD support "localhost" (e.g., for sending a user to connect to a local service)¶
R-LOCAL: A solution SHOULD be constrained to .local and .internal.¶
Discuss: MAY constrain to the DHCP domain-search value?? Should we also allow any arbitrary name if the IP address is local (RFC1918 address), too?¶
After configuration, the system needs to operate without a connection to the Internet. This is necessary because Internet connectivity is sometimes flaky or unavailable (e.g., cabin in the woods).¶
R-STANDALONE: MUST operate securely while Internet connectivity is unavailable.¶
It SHOULD be possible to have a way to represent a URI that includes a single specific IP address and the cryptographic identity of the service endpoint.¶
Discuss: the above requirement needs to be re-written.¶
SHOULD support key rotation (even if via 301 redirect)¶
Q: is it acceptable to state to be lost here? Note: likely cannot do 301 if doing TLS (HTTPS). Is this suggestion to start HTTP and upgrade to HTTPS? Could be useful for HTTPS but redirect unavailable for IPP, SMB, DoH.¶
Discuss: the above requirement needs to be re-written.¶
SHOULD support building trust relationships within devices in the local environment¶
Discuss: the above requirement needs to be re-written.¶
Discuss: the above requirement needs to be re-written.¶
R-EASY: A solution SHOULD have human factors and adversarial testing on proposed solutions to make sure that this solution provides a reasonable experience to average and novice end-users and does not introduce new security exploitation vectors¶
R-BOOKMARK: A solution SHOULD have a URI that users can Bookmark to create an association to a friendly name.¶
Discussion: Can URL bar of the browser honor mDNS/DNSSD advertised names, or give a pull-down of them similar to how the "add printer" dialog does for printers? This would help ease the use of long FQDN so it's almost as easy as router.local. Especially if it could show a nickname that is configured by the printer.¶
R-CONSISTENT: A solution SHOULD represent these URIs to humans in a consistent, readable, and non-confusing fashion. (In a browser, users shouldn't see the key fingerprint by default but rather a representation of its presence)¶
Is it acceptable for the Web Origin to change as part of key rotations? A: no, this does not happen today and changing the web origin would violate the principle of least surprise.¶
Is TOFU acceptable?¶
Note: TOFU is arguably what we have today with self-signed certificates which can be trusted (after the user accepts the warning message and adds the certificate to their client's trust store).¶
For a solution, what is the User Experience for any trust relationship / web-of-trust?¶
For a solution, what is the nature of the trust relationship?¶
How does a solution tie into systems like Matter/Thread that have their own trust establishment frameworks?¶
For the below, "Secure communications" means being able to make a TLS connection to a service such that the service is able to authenticate itself in a way to prevent MitM attacks. The security model must be TOFU at a minimum, but when the identity of a service is none it should be possible to send it as a URI in such as a way to present a secure association rooted in the connection that sent it:¶
Secure communications via HTTPS to admin interfaces on CPEs for both initial and ongoing configuration tasks of various servers (router, printer, NAS, etc.).¶
Secure communications to DoH/DoT servers on CPEs¶
Secure communications to printers (IPPS [RFC7472] printing)¶
Secure communications to other local services (SMB over QUIC to another workstation or a NAS) and IoT devices¶
Secure communications to localhost processes from a browser (e.g., admin tools)¶
TODO Security¶
This document has no IANA actions.¶
TODO acknowledge.¶