Created
April 9, 2020 23:10
-
-
Save futhr/9f4e91ca2826ca719d20efa457836648 to your computer and use it in GitHub Desktop.
Create a self-signed SSL certificate for localhost.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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