Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do we need ssl certificate for both front end and backend?

Tags:

https

ssl

We have 2 Rails app (one for front end and other for backend(api) hosted on 2 different servers. User comes to our front end app and fills the order form. We then send json request to backend and backend send confirmation json response to front end. Backend is only accessible from our office address and is setup to communicate to only our front end app.

Today we purchased EV ssl certificate for our front end app from DigiCert and everything is work fine. But since we don't have ssl certificate on backend, does that means that what ever data we are passing from our front end to backend will be unencrypted?

  • Do we need ssl certificate for both front end and back end servers?
  • Our backend only servers request to our front end app and no other clients are connect to our backend? So can I use a self-signed or cheap SSL certificate for backend?
  • Or shall I buy another ssl certificate from DigiCert? (bit expensive)

I have already gone through couple of stack overflow questions, and looks like suggestion is to install ssl in both servers. This is my first time trying to set up ssl certificates on servers, so just want to double check before I buy another ssl certificate for our backend app.

Update

I found few cheap ssl certificate provides, what are people suggestions towards cheaper provider like this one https://cheapsslsecurity.com.au/

like image 668
r3b00t Avatar asked Feb 23 '17 04:02

r3b00t


People also ask

Do I need SSL on my back-end server?

So, yes, if you are very paranoid and do not have a VPN between the front end and back-end, then secure the back-end. But all this does is encrypt the data between the two. It does not make a server 'secure'. What does this mean? Asuming your back end has no http presence (not discoverable on the web) then SSL on the backend is probably overkill.

Do I need SSL termination for my front-end / back-end applications?

Ideally, the connections from the Internet to your front-end and the connections from your front-end to back-end both need to be protected using SSL. Whatever is serving your front-end / back-end applications would most likely support SSL termination. Your front-end is most likely served by a web server like Nginx or Apache.

Where should I put the SSL certificate?

A client connects to frontend and then frontend connects to backend in order to get data. Where should I put the certificate on the frontend or backend part? Ideally, the connections from the Internet to your front-end and the connections from your front-end to back-end both need to be protected using SSL.

How do I set up SSL for my front end?

Your front-end is most likely served by a web server like Nginx or Apache. You need to get the web server to listen over port 443 and setup SSL there.


1 Answers

SSL only encrypts data between the server and the client.

It does not make a server secure.

It only prevents sending unencrypted data over the all the little hops that data makes between client and server.

Your back-end may be in a completely separate geo location or in the the server farm next door. But, it still may travel through several routers to get there. Without SSL, the data is sent in the raw. I have a few servers, some in a different rack with the same host, and some are hundreds of miles apart. Going from rack to rack in the same geo loaction still requires hops over various routers -assuming no VPN. So, yes, if you are very paranoid and do not have a VPN between the front end and back-end, then secure the back-end. But all this does is encrypt the data between the two. It does not make a server 'secure'.

What does this mean? Asuming your back end has no http presence (not discoverable on the web) then SSL on the backend is probably overkill. Why? Becaue the only people who know it exists are employees - and no amount of SSL is gonna protect the server from anyone who knows it exists or how to access it.

Neither will SSL protect you against other attacks such as SQL Injection. For example, the Equifax breach which Equifax claim was a bug in Apache Struts (although my guess is that there was more to that than meets the eye).

SSL is a band-aid on a flawed system. It does not make a server secure. All it does is encrypt data between the server and the client.

like image 184
rockmo Avatar answered Sep 22 '22 09:09

rockmo