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

add autotls blog post #137

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

add autotls blog post #137

wants to merge 8 commits into from

Conversation

2color
Copy link
Contributor

@2color 2color commented Dec 20, 2024

TODO before merging

@2color 2color requested review from cewood and lidel December 20, 2024 13:24
@2color 2color assigned aschmahmann and unassigned aschmahmann Dec 20, 2024
@2color 2color requested a review from aschmahmann December 20, 2024 13:24
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
2color and others added 2 commits December 24, 2024 10:40
Co-authored-by: Marcin Rataj <lidel@lidel.org>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
@2color 2color requested a review from guillaumemichel January 8, 2025 14:22
Copy link

@guillaumemichel guillaumemichel left a comment

Choose a reason for hiding this comment

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

Great post! A few nits:

src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
src/_blog/aut-tls.md Show resolved Hide resolved
2color and others added 3 commits January 16, 2025 11:56
src/_blog/aut-tls.md Outdated Show resolved Hide resolved
Copy link

@mishmosh mishmosh left a comment

Choose a reason for hiding this comment

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

Excited for this to go live. Added a few comments with a lens towards using this for browser advocacy and drawing in new users, and 2 small typos.

src/_blog/aut-tls.md Outdated Show resolved Hide resolved

[Interplanetary Shipyard](https://blog.ipfs.tech/shipyard-hello-world/) is excited to announce [AutoTLS](https://registration.libp2p.direct/), a new service that automates the issuance of Let's Encrypt wildcard TLS certificates for libp2p nodes.

This is a major leap for the libp2p ecosystem, because it allows connectivity between browsers and libp2p nodes using Secure WebSockets, opening up a new class of use cases for libp2p that were previously cumbersome.

Choose a reason for hiding this comment

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

Would be great to include 2 marketing/advocacy points here:

  • Would be great to get more specific about "new class of use cases" so devs who aren't yet libp2p users can more easily identify "oh, that sounds like me", e.g. "making it easier than ever to build peer-to-peer web applications".
  • Something about how this is an in-between step while we're also working with groups like Igalia to expand native browser support, which would be even better.

cc @lidel @aschmahmann

Copy link
Contributor Author

@2color 2color Jan 17, 2025

Choose a reason for hiding this comment

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

Two obvious and known use case I'm thinking about:

  • Direct retrieval, e.g. less reliance on recursive gateways in IPFS land. Another way to frame this: "quicker time to self publishing content on the web"
  • Browser based light clients for blockchains. By being able to connect to Ethereum consensus nodes and any other libp2p based blockchain means you can in theory forgo paid/centralized RPC endpoints and build much more decentralised light nodes.

Something about how this is an in-between step while we're also working with groups like Igalia to expand native browser support, which would be even better.

What do you mean by native browser support? As far as I'm aware it's Igalia is working on fixing WebTransport in Chrome and working on custom protocol handlers that could be bound to service workers from extension. I'll add to add something about how WebTransport is much better designed for this since it supports self-signed certificates, less round trips, and avoid double encryption.


## Conclusion

Our long-standing goal at [Interplanetary Shipyard](https://blog.ipfs.tech/shipyard-hello-world/) is building a more resilient and participatory internet through decentralization, and we believe that the Web platform plays an important role in this. Therefore, we're excited to announce AutoTLS as a public good service operated by us.

Choose a reason for hiding this comment

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

"public good service..." --> maybe include for whom

- [IPFS Desktop starting with v0.40.0](https://github.com/ipfs/ipfs-desktop/releases/tag/v0.40.0).
- [js-libp2p](https://github.com/libp2p/js-libp2p/tree/main/packages/auto-tls) for Node.js.
- [go-libp2p](https://github.com/libp2p/go-libp2p/tree/master/examples/autotls).

Choose a reason for hiding this comment

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

Here or else, include who/when it should not be used.

Co-authored-by: Mosh <1306020+mishmosh@users.noreply.github.com>

Recent investments in [WebTransport](https://connectivity.libp2p.io/#webtransport) and [WebRTC](https://connectivity.libp2p.io/#webrtc) helped circumvent this problem, by removing the need for CA-signed TLS certificate, but they have their own drawbacks outlined below.

Experience has shown that WebSockets are still the most common and reliable way to establish a bi-directional streaming connection from a browser. That's not to say that WebSockets are perfect. Most notably, in libp2p, [Secure WebSockets require 6 round trips to establish a connection](https://connectivity.libp2p.io/#websocket?tab=websocket-in-libp2p). By comparison, [WebTransport requires 3 round trips](https://connectivity.libp2p.io/#webtransport?tab=webtransport-in-libp2p), which is why we believe WebTransport is the future of browser-node connectivity.
Copy link
Contributor

Choose a reason for hiding this comment

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

[LanguageTool] reported by reviewdog 🐶
This word is normally spelled as one. (EN_COMPOUNDS_BI_DIRECTIONAL)
Suggestions: bidirectional
Rule: https://community.languagetool.org/rule/show/EN_COMPOUNDS_BI_DIRECTIONAL?lang=en-US
Category: MISC


### AutoTLS DNS-01 challenge broker

1. To kick start the AutoTLS process, your libp2p node requests a TLS certificate for `*.<PeerID>.libp2p.direct` from Let's Encrypt. To which Let's Encrypt responds with a challenge to prove it controls that domain.
Copy link
Contributor

Choose a reason for hiding this comment

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

[LanguageTool] reported by reviewdog 🐶
The word “kick-start” is spelled with a hyphen. (KICK_START_HYPHEN[1])
Suggestions: kick-start
URL: https://languagetool.org/insights/post/hyphen/#compound-nouns-with-and-without-hyphens
Rule: https://community.languagetool.org/rule/show/KICK_START_HYPHEN?lang=en-US&subId=1
Category: GRAMMAR


[Two years ago, the libp2p project bet on the promise of WebTransport](https://blog.libp2p.io/2022-12-19-libp2p-webtransport/) and it's been a bumpy road.

WebTransport has a lot of promise. It's a modern browser protocol based on QUIC (which we already heavily rely on in libp2p), which allows bi-directional streaming communication with many modern improvements over WebSockets. Most notably:
Copy link
Contributor

Choose a reason for hiding this comment

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

[LanguageTool] reported by reviewdog 🐶
This word is normally spelled as one. (EN_COMPOUNDS_BI_DIRECTIONAL)
Suggestions: bidirectional
Rule: https://community.languagetool.org/rule/show/EN_COMPOUNDS_BI_DIRECTIONAL?lang=en-US
Category: MISC


[WebRTC-Direct](https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md) is an approach using WebRTC to allow browser-to-node communication. It's unique in that it doesn't require SDP signaling, and saves the round trips by constructing the SDP from the information in the webrtc-direct multiaddr (a technique called "SDP munging"). Moreover, WebRTC, doesn't require a domain name and CA-signed TLS certificate.

However, there are a number drawbacks to WebRTC:
Copy link
Contributor

Choose a reason for hiding this comment

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

[LanguageTool] reported by reviewdog 🐶
Did you mean “number of”? (A_NUMBER_NNS[1])
Suggestions: number of
Rule: https://community.languagetool.org/rule/show/A_NUMBER_NNS?lang=en-US&subId=1
Category: GRAMMAR


## Origins vs. PeerIDs

The Web security model is anchored to domain names (origins). Moreover, browsers require TLS certificates to be signed by a certificate authority (CA) so as to ensure that the entity requesting a certificate owns the domain name. The role of certificate authorities is to verify that the entity requesting a certificate owns the domain name.
Copy link
Contributor

Choose a reason for hiding this comment

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

[LanguageTool] reported by reviewdog 🐶
‘So as to’ expresses purpose and is used in formal texts. Consider using “to”. (SO_AS_TO[1])
Suggestions: to
URL: https://languagetool.org/insights/post/synonyms-of-in-order-to/
Rule: https://community.languagetool.org/rule/show/SO_AS_TO?lang=en-US&subId=1
Category: REDUNDANCY

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.

5 participants