-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
IPFS/HTTPS via port 443 to allow direct connections via encrypted SNIs #7073
Comments
To circumvent that all systems need to have DNSSec and encryption enabled DNS resolver, we could integrate our own DNS Server, which can also resolve any crypto namesystem we like to support in the future. More details here: https://discuss.ipfs.io/t/coredns-ipfs-ipns-dns-servers/7605/4?u=rubenkelevra |
DNSAddr is "DNSLink for multiaddrs"@RubenKelevra FYI we already have $ dig +short TXT _dnsaddr.bootstrap.libp2p.io
"dnsaddr=/dnsaddr/ams-2.bootstrap.libp2p.io/tcp/4001/ipfs/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb"
"dnsaddr=/dnsaddr/ewr-1.bootstrap.libp2p.io/tcp/4001/ipfs/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa"
"dnsaddr=/dnsaddr/nrt-1.bootstrap.libp2p.io/tcp/4001/ipfs/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt"
"dnsaddr=/dnsaddr/sjc-1.bootstrap.libp2p.io/tcp/4001/ipfs/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN" This means a domain
HTTPS Gateway and libp2p listener on the same portWe could integrate something like that in the future, as an option for specific hostnames defined in Prior art: I've been using
It acts as reverse proxy which runs in front of SSH/nginx, so as the first step one could try running it in front of go-ipfs and sharing results/configuration in this issue. |
Thanks for the input! I think the port sharing thing is the easiest and can be done in the userland (until it's implemented in IPFS). The connection (with the Hostkey from DNS) and query for IPNS and then query directly for the CID just on that node, is the complex part - but also the most interesting. A node queried with a (special?) command could return not only the IPNS to CID information but also start streaming the first CID blocks, basically as prefetching, immediately on connection establishment, based on the encrypted SNI. This gives the receiving node time to confirm the IPNS record and process the first CID block, while the data is already being received. This should bring the time to first byte down to one roundtrip plus the processing time for the handshake, IPNS validation and CID processing since QUIC and TLS1.3 can return early data (there are some security implications doing this, though). With TLS over TCP/IP we're still slower (if there's no TCP fast open available, but it should be like one magnitude faster than querying the DHT. |
This would add a lot of complexity and isn't necessary.
|
This proposal aims to extend the current functionality to allow a Webserver with HTTPS and an IPFS client on the same port, with different TLS-Keys.
Motivations
ipget
Connection flow
Scenario: IPFS enabled client
Scenario: IPFS enabled client - Server hold no data
Scenario: IPFS enabled client - Server is down
Scenario: IPFS enabled client - CryptoDNS
Required changes to IPFS
DNSLink (v2?)
IPFS-Node
Security implications
The same security implications apply which are true for the current DNSLink:
Censor robustness
(This ticket originates from this discussion #7053.)
The text was updated successfully, but these errors were encountered: