Switching Your Site to HTTPS on a Shoestring Budget
css-tricks.com
css-tricks.com
Why don't they mention Let's Encrypt? It is free and easy to setup.
You also have to use GitLab.
Am I missing something?
I mean, yes, if you have practical problems that make gitlab harder to use, don't use it. No problem at all. But it is still a perfectly valid solution for the problem the GP was trying to solve.
This is where you lose control over your website:
https://blog.cloudflare.com/why-we-terminated-daily-stormer/
For everyone else, I'm thinking the few hours it takes your DNS settings to propagate in the unlikely event you'll even have to is probably a reasonable tradeoff for free.
...so far
http://www.washingtontimes.com/news/2017/aug/30/cloudflare-p...
this has only just begun
If tech companies want to wade into this they would need to codify a standard that applies universally to all violent political actors. And, guess what, this comes up a lot in the U.N. and the militarily powerful nations tend to shy away from anything that might include what they do as "terrorism" or illegal. They tend to prefer blacklists they manage themselves over universal standards.
Not only do they control your DNS they also control all traffic going to your site, also the connection between you and them is not encrypted.
I figured this would be a tutorial for letsencrypt. Cloudflare certainly is an option but it's not one I would recommend for -most- people unless I know why they're opting for SSL. If it's static content then sure- but I don't support cloudflare for dynamic content. I'm responsible for things like passwords and I can't keep that responsibility if I actually choose to MITM my own site with an external company.
Trust doesn't enter into it. I don't trust myself with your password so why would I trust anyone else?
The tutorial uses the Full encryption option, which does encrypt the data between your origin server and Cloudflare. You might be thinking of their flexible SSL option?
[EDIT] I might add that for anyone not using GitHub Pages as per the tutorial, they'll need additional steps to get Full SSL working with Cloudflare. It's not effortless.
I brought this up and was told "This is something we are definitely considering." but heard nothing beyond that.
by offering the "flexible ssl" option at all it seems that they couldn't give a toss whether on not it actually protects anyone
Thus immediately increasing risk by 100%.
In actuality though, even more - if you use the setup where the connection between you and CF is not encrypted. In that case any hop along the way between you and CF could intercept the data.
While you are right in that cloudflare won't stop you making this questionable design choice if you want, you shouldn't and you don't have to either.
You can still use cloudflare's ssl certificate AND use letsencrypt/<other cert provider> to secure traffic between cloudflare and your server, ensuring SSL end to end (aside from the obvious MITM stuff cloudflare have to do in order to successfully retrieve content from their caches etc). Cloudflare call this configuration "full" encryption, as opposed to the somewhat terribly named "dynamic" setup you are referring to.
This is one aspect of cloudflare I'm not huge on either, given that when users see an SSL padlock they may have a reasonable expectation their input is at least encrypted until it reaches the destination server (again with the cache MITM caveats and so on) but no one is forcing you to use it that way.
The TL;DR is it goes over the entire process of setting up a new server, buying / configuring a domain name and securing your site with Let's Encrypt in an automated way.
Production ready configs are included to support nginx and Apache running on Ubuntu or CentOS. It will work with any web framework or static site.
Of course, when I was setting it up, Googling gave me pretty clear instructions, so a course wasn't needed, but depending on the exact server setup people have, maybe some installs are harder than others...
Most of the course is going over a bunch of common server set ups (1 static site, multiple sites on the same server, reverse proxies) along with going over how Let's Encrypt works and how you can apply it to nginx / Apache.
About 20 minutes out of the 3 hours of content is dedicated to registering a domain name and setting up the server itself.
I added those sections because it makes the course an end to end solution on how to go from "hey, I have my site on my own computer but how the heck do I securely host it on the internet?" to really doing it.
That decision was guided by feedback from existing people who have contacted me and asked for that information specifically.
Lots of people have applied the course's content to their existing set up. That's how most people ended up following along.
I think the EFF already got that covered: https://certbot.eff.org
I'd much rather configure nginx / Apache myself so I know exactly what's happening and can mold the solution to fit whatever use cases I have.
You'll need to turn off your web server for a minute or two while certbot runs ('standalone' means it starts up a temporary web server of its own and binds to port 80 for a moment) but then it leaves the new certificate for you in a few files in /usr/local/ somewhere, and you proceed to edit the nginix.conf file yourself. It works great.
On my personal servers, I have the regular webserver configured to listen on port 443 (HTTPS) only, and I have a separate webserver on port 80 that's only used for ACME challenges. All other HTTP requests are immediately upgraded to HTTPS. Among other things, this split solves the cyclic dependency between the webserver not starting without TLS certificates, but also being required to provision certificates.
Details: https://blog.bethselamin.de/posts/how-i-run-certbot.html
For the sort of thing that you'd host on GHP, this is totally fine in my opinion. In fact, because CF is a pretty good CDN it likely accelerates page load times considerably for Non-Americans.
(I wish it'd be possible to do something similar for readthedocs, which only has one origin and it's located in North America, but alas this doesn't really work).
This is far from a proper and secure setup. The whole point of TLS is to ensure users are talking to you and not someone else while protecting the data. This accomplishes neither.
From a security standpoint, there is little to no risk. Worst case scenario one of the other sites is doing something that results in the cert being revoked... and I imagine CloudFlare has a way to just move you (and everyone else) onto another cert seamlessly.
I actually know of your competitor (fly.io, right?) and am giving it a test for something I'm working on that needs the hostname support after Cloudflare got me legging it when they said their hostname system was for the Enterprise plan.
https://rocknerd.co.uk/2016/12/04/rocknerd-is-now-fully-ssl-...
It took ten minutes. I boggled at how easy it was.
I tried, and I had no real excuse when some users said it didn't work for their old browsers at work. So I paid the $20/mo which made it work in all browsers and had other features that were useful to me, like on the fly image transcoding for mobile devices.
If you're really on a shoestring budget, I have a hard time justifying shutting down legit users. Just use something else like Lets Encrypt.
The problem is that ancient (pre-2006) versions of the TLS protocol provided no way for the client to tell the server, before authenticating, which hostname it wanted to talk to. So there could be only one certificate (and therefore, in practice, no more than 100 hostnames) per IP address, which made the use of HTTPS on shared hosting impossible. If you wanted HTTPS, you had to get your own static IP, which is what costs $20 per month (and you can't get it that much cheaper anywhere else).
Server Name Indication is a newer extension to the TLS protocol which solves this problem by letting the client specify, when initiating the negotiation, which hostname it wants to talk to. So HTTPS on shared hosting is now possible...unless you need to support truly ancient clients (most notably Windows XP) that are stuck with outdated TLS implementations that don't support SNI. Considering that XP doesn't even get security fixes anymore, and pretty much all clients newer than Windows Vista support SNI now, and running software that old is really not safe (Vista doesn't get security fixes anymore either), I don't think I'd have any qualms about telling those users that they need to upgrade.
https://github.com/JrCs/docker-letsencrypt-nginx-proxy-compa...
Just add the environment variables for your container, and the docker compose file from [1] and you're proxying with Let Encrypt SSL support. I encountered a few gotchas so feel free to email if you get stuck.
It really does do some interesting magic but so far seems to work great!
[1] Docker compose file and nginx.tpml here: https://github.com/evertramos/docker-compose-letsencrypt-ngi...
edit : I also use letsencrypt certificates on my Linodes.
[0] https://fly.io