-
-
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
Add SSL support to P2P #8996
base: master
Are you sure you want to change the base?
Add SSL support to P2P #8996
Conversation
22ca764
to
5208f25
Compare
Added sodium to the dependency list, hopefully builds pass now. |
5208f25
to
d8e410c
Compare
Force pushed a change based on my last comment ( |
d8e410c
to
6f1e246
Compare
Did another force-push with a rebase, to get rid of the |
af7d5c0
to
5d35a9a
Compare
I added a crude functional test for SSL. It just tests that autodetection and disabling SSL works. |
Started a review and have an initial comment. I didn't get around to fixing Running this code on a node that can get incoming connections, you can see that the back ping to an incoming node always fails (log level 2 you'll see I'm happy to do this since I said I would over in that PR, my bad for not getting to it sooner. |
5d35a9a
to
da4fc6c
Compare
@j-berman Fixed SSL connections with |
da4fc6c
to
3d88cc0
Compare
Forgot to include newest code in last push. Trying again! |
3d88cc0
to
a7c49c9
Compare
Rebased, and trying to fix a linking issue that I cannot reproduce locally. |
Please excuse my ignorance, I'm not familiar with the boost library and I'm therefore wondering what cipher are actually available ? afaiu, SSL namespace include TLS up to TLSv1.3: https://www.boost.org/doc/libs/1_74_0/boost/asio/ssl/context_base.hpp I'm probably blind but i don't find in the commit changes where are cipher options. That would be good to enforce at least TLSv1.2 |
The code already forces TLS 1.2+. It also limits the cipher list a few lines below that. |
a7c49c9
to
b3c8322
Compare
Bad rebase, will fix. |
b3c8322
to
60925f1
Compare
The test that just failed should be spurious. |
I rebased against latest master changes, which included a test merge and a seed node merge. |
First, my apologies to @moneromooo-monero for NACKing his/her SSL proposal years ago, only for me to bring it back.
This does exactly as the title suggests, with options to disable P2P encryption entirely, and an option to re-use a SSL certificate between "runs". The default generates a new SSL certificate each
monerod
run, so that the node cannot be tracked across IP address changes.Nodes do not trust encryption information from peers. Instead, every peer is assumed to be in autodetect mode, unless overridden on the CLI or via handshake/ping messages directly from the peer.
Possibly bad:
If a node chooses to re-use SSL certificates, a change in certificates will cause connection failures until the node is removed from the white+gray lists OR the node makes a direct connection and provides the new SSL certificate.
EDIT:
I will also attempt some unit test changes; there is enough to review here that I expect this diff to be up a while.