Rails + Facebook Oauth Locally with SSL
Recently I had the need to test Oauth with Facebook locally and after creating and configuring the App and everything was working wonderfully ...
until it was not.
Facebook now forces SSL so I had to setup it locally by creating a self signed certificate and running my server with it.
- Create your certificate, this script create it as
localhost.mumoc.crt
andlocalhost.mumoc.key
. Mumoc is my username in my working machine.
name=localhost.$(whoami)
openssl req \
-new \
-newkey rsa:2048 \
-sha256 \
-days 3650 \
-nodes \
-x509 \
-keyout $name.key \
-out $name.crt \
-config <(cat <<-EOF
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
CN = $name
[v3_req]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = $name
DNS.2 = *.$name
EOF
)
Make sure to at least add digitalSignature
and keyEncipherment
to KeyUsage or you won't be able to use it in Chrome
- Trust the certificate (I moved it to a
config/ssl
directory inside my app folder)
mv localhost.mumoc.* config/ssl
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain config/ssl/localhost.mumoc.crt
- Run server binding the ssl with the key and certificate
rails s -b 'ssl://localhost:3000?key=config/ssl/localhost.mumoc.key&cert=config/ssl/localhost.mumoc.crt'