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.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
keyEncipherment to KeyUsage or you won't be able to use it in Chrome
- Trust the certificate (I moved it to a
config/ssldirectory 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'