Internet-Draft | Requirements for HTTPS for Local Domains | March 2025 |
Wing, et al. | Expires 20 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 20 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 2010 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.¶
Name collisions can be engineered by attackers for nefarious purposes. For example, if a victim is configured to use the (likely) unique name "printer-12ab34cd56ef.local" (containing the printer's full or partial MAC address), an attacker can respond to connections to that name, potentially stealing the user's authentication credentials to that printer or seeing the content the user sent to that printer. Similar attacks are possible with file shares. This problem is exacerbated if non-unique names are used (e.g., simply "printer.local" or "router.local"), as it reduces the attacker's effort. Humans prefer simple, human-readable names, but a strong identity cannot be created with such names.¶
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.¶
A solution has to support HTTPS because it is frequently used for device management.¶
R-HTTPS: A solution MUST support HTTPS.¶
Other encrypted protocols are also frequently used on local networks for DNS, file sharing, mail, and telephony.¶
A solution has to support moving to new cryptographic functions.¶
R-AGILITY: A solution SHOULD support cryptographic agility (such as supporting more than one active key type and different hashes).¶
TLS servers frequently use the TLS SNI [RFC6066] extension to support multiple identities on a single server.¶
R-TLS-SNI: A solution SHOULD support TLS SNI so a server knows which key pair/cert is expected.¶
To prevent various attacks, W3C has constrained how browsers operate on private networks¶
The TLDs ".local" and ".internal" are defined local domains and enterprise networks usually have a site domain ("internal.example.com"). A solution that scales from a home network to an enterprise network is desirable.¶
R-LOCAL: A solution MUST operate with .local and .internal, and SHOULD operate with an administratively-defined zone (e.g., internal.example.com).¶
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?¶
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, lengthy ISP outage).¶
R-STANDALONE: MUST NOT require Internet connectivity to operate securely, for its initial configuration, or to add or remove a device from list of authorized devices in the system.¶
Discuss: perhaps want to refine wording of this requirement, or split into separate requirements.¶
The Web Origin is comprised of the scheme (e.g., "https:"), hostname, and port. Today, when a key rotation occurs the Web Origin remains the same. In this way, things like stored web data (forms, passwords, cookies) can be used even after a key rotation.¶
R-WEB-ORIGIN: The Web Origin MUST be retained during key rotation.¶
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.¶
Most local networks, especially home networks, do not operate their own DNS server. Many clients already support listening for DNS-SD broadcasts.¶
Successful solutions are usually also easy to deploy.¶
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¶
Names (or aliases to those names) should be simple for users -- ideally, user-defined so that if the underlying name is complex the user can create an alias that is meaningful to them.¶
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. Browser extensions exist for DNS-SD and mDNS ([Safari-ext], [Firefox-ext]).¶
Names (or aliases to those names) should be simple for users -- ideally, user-defined so that if the underlying name is complex the user can create an alias that is meaningful to them.¶
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)¶
As evidenced by web browser behavior over the years with self-signed certificates and their (increased) warnings, TOFU will not be acceptable.¶
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.¶
Changed to 2010 (from 2017) when the problem of local domain authentication was first discussed.¶
Rather than simple name collision ("printer.local"), discuss how most products include the device's (partial) MAC address -- which does help distinguishing devices on different networks. Also explain how an attacker can use that name.¶
R-AVOID-CENTRAL changed from SHOULD to MUST.¶
Justification text added to almost all R- requirements.¶
Removed R-LOCALHOST, which had said "localhost" should be handled same as a local domain. This was removed because localhost is not a unique name causing other problems for a solution.¶
R-LOCAL expanded to also cover administratively-defined zone (e.g., internal.example.com)¶
Refined R-STANDALONE.¶
Added R-WEB-ORIGIN, and moved key rotation requirement into R-WEB-ORIGIN to say the web origin has to stay the same if the key is rotated.¶
Declared TOFU as unacceptable (was a question).¶
As Related Work, added: Referee, locally-deployed CA, W3C OpenScreen Network Protocol, W3C WICG Peer-to-Peer API.¶
Added pointers to DNS-SD and mDNS extensions for web browsers.¶
Thanks to Michael Sweet for his review and feedback. Thanks to Michiel De Backker for references to related W3C work.¶