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

New Neo4j browser (3.2.0) cannot connect using HTTPS #511

Open
sgehrig opened this issue May 12, 2017 · 23 comments
Open

New Neo4j browser (3.2.0) cannot connect using HTTPS #511

sgehrig opened this issue May 12, 2017 · 23 comments

Comments

@sgehrig
Copy link

sgehrig commented May 12, 2017

After updating to Neo4j 3.2.0 the browser cannot connect to the database using HTTPS instead of Bolt any more. Due to firewall restrictions we're not able to open the Bolt ports to the world to allow web socket connections to the Bolt port directly. Instead we have to use the opened HTTPS ports.

This worked with 3.1.x but with 3.2.0 we cannot find a way to tell the browser to use HTTPS instead of Bold for connecting to the database.

@akollegger
Copy link
Member

Hi @sgehrig !

Thanks for raising this issue. This is a known regression in Neo4j 3.2 which will be addressed in a patch release. The rewritten Neo4j Browser did not migrate the code for http or https. Instead, the javascript driver itself will be upgraded to provide this functionality.

Apologies,
Andreas

@akollegger akollegger added the bug label May 12, 2017
@sgehrig
Copy link
Author

sgehrig commented May 15, 2017

@akollegger Is there any release date yet? Oh, and thx for taking care of that issue.

@naisanza
Copy link

@sgehrig Bolt encryption should still be wrapped within TLS, I believe. So would it work if you set your environment's reverse proxy to forward something like bolt.server.com:443 -> internal-bolt:7687?

@sgehrig
Copy link
Author

sgehrig commented May 17, 2017

@naisanza Yes. A proxy would be an option. But in our setup we'd prefer to have the “old" HTTPS connection back. Nobody here wants to change the setup ;-) (and it's not me who's responsible).

@kuzmik
Copy link

kuzmik commented Jun 6, 2017

Bump for release date

@jexp
Copy link
Member

jexp commented Jun 13, 2017

Anyone else who is affected by Neo4j Browser in 3.2 not being able to use http(s) anymore, can you please drop an email with all details (why exactly you need it, for us to collect feedback) to devrel@neo4j.com to inform the decision process

As a work-around you can replace the browser-jar with one from 3.1.x and it should work.

@DanielOverdevest
Copy link

+1 We've same problem with redirect BOLT protocol traffic (due port restrictions). Please supply a solution to run Neo4J Browser with only ports 80/443.

@arne-at-daten-und-bass
Copy link

Also got stuck in this (using the official Docker image). For me it worked to go back to v3.0.9:

Just switched:

FROM neo4j:latest
...

To:

FROM neo4j:3.0.9
...

Of course, not a real "solution" but it got me being able to connect via browser just as before (even with custom self-signed certificates).

Version 3.1.x did not work instantly, yet I did not further investigate that (seemed like the same issue). I rather switched further down to v3.0.9 as I did not need the latest release.

@jfleck1
Copy link

jfleck1 commented Aug 3, 2017

bump. I downgraded from neo4j:latest to neo4j:3.0.9 and it also fixed my SSL connection issues with the browser (which is awesome btw).

@chandan4raj4
Copy link

@akollegger can you please tell how much more time can we expect for that patch to get released .Now I am using its public version and am planning to use it for my official project and is there any work around for this bug ???

@andrewhl
Copy link

andrewhl commented Aug 7, 2017

+1

@akollegger akollegger added enhancement and removed bug labels Aug 8, 2017
@ecirtap
Copy link

ecirtap commented Aug 9, 2017

+1 For sure, https is a more friendly protocol for firewalls and reverse proxies than Bolt can be... Stuck in 3.1.4 (we had to tick "dont'use bolt" in the browser side params for each client to work properly).

@daviddyball
Copy link

I'm surprised this is still missing from the 3.2 release. It was a major step backwards in usability when confronted with restricted environments.

@spanishgum
Copy link

Is there any word on this as far as 3.3-community goes?

@dominicjesse
Copy link

+1 same problem here

@myndweb
Copy link

myndweb commented Dec 4, 2017

same problem. WebAdmin works perfectly with http:// but cant login with https://

@kyle-rader
Copy link

kyle-rader commented Dec 18, 2017

This seems to still be an issue in 3.3.0-enterprise. I'm trying to get Neo4j running behind Nginx (handling TLS) and would like to avoid publishing port 7687. But the option to not use bolt is no longer in the browser UI. Any updates on this?

@DanielOverdevest
Copy link

DanielOverdevest commented Dec 20, 2017 via email

@bytemedwb
Copy link

Any word on the promised patch?

Really stuck needing to make the browser accessible behind a proxy without the need to open other ports.

@mcolburn
Copy link

Same problem. Neo4j folks, are you listening??

@bryan-mtsi
Copy link

You might be able to work around this issue on Linux using iptables . I did this with 7474.

For example
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7687
or
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7474

https://wiki.jenkins.io/display/JENKINS/Running+Jenkins+on+Port+80+or+443+using+iptables

If you need port 80 to go to 7474 and 7687, the only way I can think of to do that (from the same source ip) is to use port knocking software to give you a way to flip what port the redirect goes to and flip it back.

Note the command to see your prerouting rules is not --> iptables -L
Use --> iptables -L -t nat

@bryan-mtsi
Copy link

bryan-mtsi commented Feb 2, 2018

Do this at your own risk. Get something in writing from someone who has power to un-fire you if anybody wants to make an example of you for doing this. If you need to do this because you work in a restricted environment the proper route is to submit a port exception request. Sharing this for info purposes only.

If you have three HTTP ports you need to access on a single aws-server.
aws-server:8001
aws-server:8002
aws-server:8003

Setup port redirect on aws-server using iptables so that 80 forwards to 8001.
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8001

Setup a new server aws-server2 and install a simple http proxy like the one below. Set it up to listen on port 80. Next, you will need to hack one line of code in this file to always go to port 8002.

https://github.com/abhinavsingh/proxy.py/blob/ea33c0e2c9442a0f331f5171a1293a8aa1ccde95/proxy.py

Based on his github picture, Abhinavsingh seems trustworthy. Use whatever proxy code you prefer.

http://aws-server2 is now the same as http://aws-server:8002. Obviously the traffic won't go directly to aws-server, it goes to aws-server2:80 and then is forwarded to aws-server:8002. The neo4j browser bolt connection HOST line will need to be changed at the log in prompt.

Do similar for fix with aws-server3.

@dzindzinj
Copy link

Is there any update? Does the .jar swap still work?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests