Skip to content

Instantly share code, notes, and snippets.

@futhr
Created April 9, 2020 23:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save futhr/9f4e91ca2826ca719d20efa457836648 to your computer and use it in GitHub Desktop.
Save futhr/9f4e91ca2826ca719d20efa457836648 to your computer and use it in GitHub Desktop.
Create a self-signed SSL certificate for localhost.
brew install mkcert
function ssl-check() {
f=~/.localhost_ssl;
ssl_crt=$f/server.crt
ssl_key=$f/server.key
b=$(tput bold)
c=$(tput sgr0)
# local_ip=$(ip route get 8.8.4.4 | head -1 | awk '{print $7}') # Linux Version
local_ip=$(ipconfig getifaddr $(route get default | grep interface | awk '{print $2}')) # Mac Version
# local_ip=999.999.999 # (uncomment for testing)
domains=(
"localhost"
"$local_ip"
)
if [[ ! -f $ssl_crt ]]; then
echo -e "\n🛑 ${b}Couldn't find a Slate SSL certificate:${c}"
make_key=true
elif [[ ! $(openssl x509 -noout -text -in $ssl_crt | grep $local_ip) ]]; then
echo -e "\n🛑 ${b}Your IP Address has changed:${c}"
make_key=true
else
echo -e "\n✅ ${b}Your IP address is still the same.${c}"
fi
if [[ $make_key == true ]]; then
echo -e "Generating a new Slate SSL certificate...\n"
count=$(( ${#domains[@]} - 1))
mkcert ${domains[@]}
# Create Slate's default certificate directory, if it doesn't exist
test ! -d $f && mkdir $f
# It appears mkcert bases its filenames off the number of domains passed after the first one.
# This script predicts that filename, so it can copy it to Slate's default location.
if [[ $count = 0 ]]; then
mv ./localhost.pem $ssl_crt
mv ./localhost-key.pem $ssl_key
else
mv ./localhost+$count.pem $ssl_crt
mv ./localhost+$count-key.pem $ssl_key
fi
fi
}
ssl-check
# If you get SSL errors later is most likely because your local IP has changed
# and the self-signed SSL certificate you created is no longer valid.
# To remove these warnings and errors, simply repeat steps 2 and 3 above to
# regenerate a new self-signed certificate.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment