No more self-sighed certs. Use something like LetsEncrypt.
We currently have “star” topology. That means that when my server goes down everyone suffers. If when my server goes down, other servers could just directly connect to each other we could eliminate one style of netsplit. This would also recover from different situations better. Essentially, we would eliminate a single point of failure in the system—the “hub”
However, if networks happen correctly, this could result in all traffic
being routed through a homeserver (beige-box.com
) or bouncing back and forth between
hemispheres ( ` seriocomicrhetoric <-> supertools <-> ohnopub binki
).
Simply using sslclientcert
auth has so many advantages over other modes
of authentication in unrealircd. You can publish your links.conf
without
revealing any compromising information. You are not subject to certain modes
of MITM (e.g., with pre-shared password auth if a man in the middle appears
you’ll just tell him your password whereas with TLS cert auth, according
to mathematicians, you will not give the man in the middle any ability to
impersonate you by trying to authenticate against it and verify it (which
should fail)).
Unfortunately, this has various impliciations and makes the whole management of the remote includes repository harder.
Doing this simply would be a problem of wanting all servers to have X.509 certificates with the same Common Name. This is an issue for various reasons. We’d either have to copy keys or do the LE manual process (does it have an equivalent to CSR on server, copy to RI system)
That is dirty anyway. Instead have one person manage certs in their
own infra internally (i.e., soulman) which just issues redirect to
connecting IRC clients to tell them to connect to a particular server.
E.g., you connect to irc.anarchyirc.com
, get one of two servers,
and are told to connect to irc.ohnopub.net
or supertools.coffee
or whatever. Then each server can have its own identity and do its own
LetsEncrypt stuff.
Server does this when getting new cert:
- run certbot thing via cron
- run post-new-cert script which does some
curl
command to give Remote Includes repo new cert
Use curl
’s POST
spuport to give both updated certificate and a
per-server “API key” file. Right now it is considered unavoidable
that the Remote Includes repository will need to have some way of
decentralizing itself so that this can be more likely to succeed.
Basically, the Remote Includes thing will accept the cert, rewrite
the links.conf
, and issue network-wide REHASH
. How to make that
semi-centralized thing decentralized? Is it too overcomplicatd to make
it use git for the raw data so that if you have multiple RI server nodes
they can be updated concurrently and automatically merge (as long as
the data is carefully stored in an explicitly mergable format)? Maybe.
That’s all I can think of though for now.
Next meeting after binki
comes up with a Proof of Concept will be
2017-04-21T01:00Z (2017-04-20T21:00 EDT).