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

Server path #119

Open
mitra42 opened this issue May 8, 2020 · 8 comments
Open

Server path #119

mitra42 opened this issue May 8, 2020 · 8 comments
Assignees

Comments

@mitra42
Copy link
Collaborator

mitra42 commented May 8, 2020

@jmday raised the issue of storing server name, so we can remove any data from a malicious server. I think it needs to be server "path" a-la-usenet so that a bad server can't fake this field.

@danaronson Thoughts ?

Note - this does add the question of what constitutes a name for a server and might interact with the question you raised Dan about certificates for sync.

@danaronson
Copy link
Collaborator

maybe we just want to move to the certificate idea.

@jmday The thought that I had is that servers could be legitimate or illegitimate (and legitimate servers could become illigitemate) via Safe2 (or a greater collection or orgs) running a certificate authority. We could only allow connections from servers or clients that have a certificate signed by the certificate authority and have an open and transparent definition of what is required for our certificate authority to sign certificates.

@mitra42
Copy link
Collaborator Author

mitra42 commented May 9, 2020

The client one might be hard - and not much point (and require complex cert distribution) but how hard would it be to distribute certs - I've never done this, I can think of simple ways of doing this
a) complex: certificate authority of our own, under one of the registrars I guess - I haven't a clue about this one
b) Wild card cert *.safe2.org, then a DNS server that matched DNS to cert.
c) People just need their own certs (e.g. Letsencrypt), in their own domains, and we keep some kind of global table of ones we register.

In any case in /sync we'd have to figure out how to check the cert (or assume the nginx front end had) and somehow capture the domain name from it ?

I don't know how to do any of this forward-looking in http (as opposed the https server being contacted having a cert), do you @danaronson

@danaronson
Copy link
Collaborator

I know how to do some of it. I would suggest not creating our own scheme. CA's are well documented and a clear way of doing this. Client certs can be included in builds (at least in IOS, pretty sure in android to). If you deal with certs it is important to also support CRL (certificate revocation list) in case you want to revoke someone's cert. Most webservers know how to do that.

Happy to have a conversation. i think this is an exact use case for CAs

@mitra42
Copy link
Collaborator Author

mitra42 commented May 9, 2020

What about server<>server which is the real use case we care about in this Issue.

@danaronson
Copy link
Collaborator

danaronson commented May 9, 2020 via email

This was referenced May 11, 2020
@mitra42
Copy link
Collaborator Author

mitra42 commented May 11, 2020

The path part of this is done in PR #128, so its now on @danaronson for the CA if that is the route we are going.

@mitra42
Copy link
Collaborator Author

mitra42 commented May 13, 2020

If I understood our discussion - then the solution is to use the certificate or domain ID of the server we are connecting to via HTTPS (since its in 'sync' which is always a Pull from a known location.

@danaronson
Copy link
Collaborator

danaronson commented May 13, 2020 via email

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

No branches or pull requests

2 participants