But hello!, along comes letsencrypt.org. A service allowing you to create SSL certs for free! Now in public beta. Whoo hooo!
It isn't particularly pretty at the moment and certs only last 90 days but it seems to work ok. For Openshifts Wordpress gear you can't really do much customization (and probably don't want to) so installing letsencrypt on that looks messier than I'd like. Fortunately you can create a cert offline with letsencrypt and upload it to wordpress. Steps in a nutshell:
- Install letsencrypt locally. Use a Linux server or VM preferably.
- Request a new manual cert.
- Upload the specified file to your site.
- Complete cert request.
- Upload certificate to openshift.
Commands:
- Install letsencrypt:
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
- Request a new manual cert:
./letsencrypt-auto --agree-dev-preview -d <your-full-site-name> --server https://acme-v01.api.letsencrypt.org/directory -a manual auth -v --debug
- This command will pause to allow you to create a file and upload it to your website. The file needs to be placed in the /.well-known/acme-challenge folder and has a nice random/cryptic base-64 encoded name (and what appears to be a JWT token as contents). This is provided on screen and mine was called something like KfMsKDV_keq4qa5gkjmOsMaeKN4d1C8zB3W8CnwYaUI with the contents something like KfMsKDV_keq4qa5gkjmOsMaeKN4d1C8zB3W8CnwYaUI.6Ga6-vVZqcFb83jWx7pprzJuL09TQxU2bwgclQFe39w (except that's not the real one...). To upload this to an openshift wordpress gear site:
- SSH to the container. The address can be found on the application page on Openshift.
- Make a .well-known/acme-challenge folder in the webroot which can be done on the wordpress gear after SSHing via.
cd app-root/data/current
mkdir .well-known
mkdir .well-known/acme-challenge
cd .well-known/acme-challenge
- Create the file with the required name/content in this location (e.g. see vi).
vi KfMsKDV_keq4qa5gkjmOsMaeKN4d1C8zB3W8CnwYaUI
- Once uploaded and you're happy to contine, press ENTER back on the letsencrypt command as requested. Assuming this completes and manages to download the file you just created you'll get a response that all is well and the certificates and key will have been created.
- To upload these certs to your site (from /etc/letsencrypt/live/<your-site-name/ locally), go to the Openshift console > Applications > <your-app> > Aliases and click edit. This will allow you to upload the cert, chain and private key files as below. Note that no passphrase is required.You need to use fullchain.pem as the SSL cert on Openshift.com and leave the cert chain blank. If you don't do this then some browsers will work but other such as Firefox will complain bitterly...
- Save this and after a few mins you'll be done.
Once done, you can access the site via a secure HTTPS connection you should see a nice secure icon showing that the site is now protected with a valid cert :)
Details of letsencrypt.org supported browsers are on their website..
Good luck!
Having just had to walk a supposedly IT literate client team through the whole process of buying and installing a certificate, this is the kind of post that I needed three months ago! Another great post , Mr NFA!
ReplyDeleteThank you a lot for this post! :-) I'm going to deploy a Node app on Openshift soon and I've successfully created a cert with help of two great blog posts including this one of yours. It's really awesome that anyone can do it now. I had a thought to use a free StartSSL cert and even registered earlier today but my experience wasn't pleasant from the beginning, they refused to issue a cert saying it's been only two days since I bought a domain name and I should come back "tomorrow". Then I've read a Wikipedia article about them and it's kinda scared me off.
ReplyDeleteHowever, I think I messed up by adding only www subdomain (as Openshift requires a CNAME record pointing to a *rhcloud.com app). Do you think it's ok or I should re-run the procedure and add root domain as well? I'm asking cause I'm not really an expert in web domains stuff and it's my first time I take care of SSL.
I think you should be ok with SSL certs for just the subdomains and I don't believe letsencrypt will provide wildcard SSL certs to cover the root domain and all subs.
ReplyDelete