49 lines
1023 B
Bash
49 lines
1023 B
Bash
#!/usr/bin/env bash
|
|
set -eu
|
|
org=localhost-ca
|
|
domain=localhost
|
|
|
|
rm -rf keys
|
|
mkdir keys
|
|
cd keys
|
|
|
|
openssl genpkey -algorithm RSA -out ca.key
|
|
openssl req -x509 -key ca.key -out ca.crt \
|
|
-subj "/CN=$org/O=$org"
|
|
|
|
openssl genpkey -algorithm RSA -out "$domain".key
|
|
openssl req -new -key "$domain".key -out "$domain".csr \
|
|
-subj "/CN=$domain/O=$org"
|
|
|
|
openssl x509 -req -in "$domain".csr -days 365 -out "$domain".crt \
|
|
-CA ca.crt -CAkey ca.key -CAcreateserial \
|
|
-extfile <(cat <<END
|
|
basicConstraints = CA:FALSE
|
|
subjectKeyIdentifier = hash
|
|
authorityKeyIdentifier = keyid,issuer
|
|
subjectAltName = DNS:$domain
|
|
END
|
|
)
|
|
|
|
sudo cp ca.crt /usr/local/share/ca-certificates/testing.crt
|
|
sudo update-ca-certificates
|
|
|
|
|
|
echo '
|
|
## Chrome
|
|
1. go to chrome://settings/certificates
|
|
2. tab "authorities"
|
|
3. button "import"
|
|
4. choose "ca.crt"
|
|
5. trust for identify websites
|
|
|
|
## Firefox
|
|
1. go to about:preferences#privacy
|
|
2. button "view certificates"
|
|
3. button "import"
|
|
4. choose "ca.crt"
|
|
5. trust for identify websites
|
|
'
|
|
|
|
echo done!
|