Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discovery: Change to HTTPS DNS records #72

Open
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

oej
Copy link
Collaborator

@oej oej commented Nov 18, 2024

  • Remove the DNS URI records as a few large DNS providers does not support them (and the RFC is informational)
  • Clarify TLS certificate requirements (according to RFC 9640)
  • Fix some markdown formatting (make markdownlint happy)

_tei._tcp.tex.example.com. 3600 IN URI 20 1 “https://backup.example.com/transparency“
_tei._tcp.tex.example.com. 3600 IN URI 30 1 “https://thirdparty.example.org/example.com/transparency“

Results in `https://tea.example.com/.well-known/tea/<identifier>` while connecting to
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm unclear why we'd connect to a host that is different from the URL - doesn't this just mean we'd connect to https://tea01.prod.example.com/.well-known/tea/<identifier> ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, I'd drop the <identifier> from this example as that is subject to the API Specification

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the example we need something, but that is covered below I guess.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 7396851

- URL: `https://products.example.com/.well-known/tea/d4d9f54a-abcf-11ee-ac79-1a52914d44b1/`
- HTTP 302 redirect to "https://teapot02.consumer.example.com/tea/v2/product-index/d4d9f54a-abcf-11ee-ac79-1a52914d44b1'

The server at "teapot.prod.example.com" needs a TLS certificate including "products.example.com"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why would we not just connect to teapot.prod.example.com? I don't understand the value provided by the TLS cert at teapot.prod.example.com also including a Subject Alt Name of products.example.com

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the "user" is connecting to "products.example.com" - all the other host names just show up in DNS resolution to find a proper HTTP server to connect to, but they don't change the URI that was requested.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this is akin to using CNAME records with regular HTTP web browsing...

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As CNAME can't be used at top level, like "https://edvina.net" these records will work there. Yes, it's similar.

- URL: `https://www.example.com/transparency/d4d9f54a-abcf-11ee-ac79-1a52914d44b1/`
- DNS record: `products.example.com`
- Server found in DNS HTTPS record: `teapot.prod.example.com`
- URL: `https://products.example.com/.well-known/tea/d4d9f54a-abcf-11ee-ac79-1a52914d44b1/`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As per above - I'm unclear why the URL would not be https://teapot.prod.example.com/.well-known/tea/d4d9f54a-abcf-11ee-ac79-1a52914d44b1/

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DNS is just used to find the server for the HTTPS://products.example.com URI

I parse the RFC as this is NOT a redirection which would change the URI.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if any web browsers or curl actually use these records. Will check with CURL.

Copy link
Collaborator

@madpah madpah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comments add @oej

…wn name space

Text copied from RFC 6474

Signed-off-by: Olle E. Johansson <[email protected]>
@oej
Copy link
Collaborator Author

oej commented Nov 18, 2024

Text from the RFC: "Note that none of these forms alter the origin or authority for
validation purposes. For example, TLS clients MUST continue to
validate TLS certificates for the original service name."

So if the URI points to "products.example.com" - this is what you use to validate the TLS cert for the first server. After 302 you got a new or the same server.

Signed-off-by: Olle E. Johansson <[email protected]>
@oej
Copy link
Collaborator Author

oej commented Nov 18, 2024

https://www.netmeister.org/blog/https-rrs.html

“Firefox has been making HTTPS lookups (albeit only over DoH) since May 2020, Apple’s iOS and Safari / macOS since September 2020, Chrome has had partial support since December 2020, and just recentlyenabled ECH by default. Various DNS service providers also offer support for HTTPS and SVCB records already.”

discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
discovery/readme.md Outdated Show resolved Hide resolved
oej and others added 10 commits November 18, 2024 14:06
Add UPC bar code

Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Typo

Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Co-authored-by: Paul Horton <[email protected]>
Signed-off-by: Olle E. Johansson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants