Skip to content

Instantly share code, notes, and snippets.

@radimih
Last active March 10, 2021 11:04
Show Gist options
  • Select an option

  • Save radimih/4cbcf98a2b5bec2284795a42a690a744 to your computer and use it in GitHub Desktop.

Select an option

Save radimih/4cbcf98a2b5bec2284795a42a690a744 to your computer and use it in GitHub Desktop.
Выпуск самоподписанного SSL-сертификата

Выпуск самоподписанного сертификата

Генерируем сертификат для {FQDN}:

$ cd /etc/nginx/ssl
$ ./gen_cert.sh
$ cd ..
$ vim nginx.conf
server { ... /etc/nginx/ssl/{FQDN}.{crt,key}
$ systemctl reload nginx

Проверяем, что сертификаты совпадают:

$ openssl s_client -connect localhost:443
$ openssl x509 -text -in /etc/nginx/ssl/{FQDN}.crt

Java

Добавить в cacerts выпущенный нами сертификат:

$ keytool -delete -keystore cacerts -storepass changeit -alias {FQDN}
$ keytool -importcert -file /etc/nginx/ssl/{FQDN}.crt -trustcacerts -keystore /etc/pki/java/cacerts -storepass changeit -alias {FQDN}

Проверяем:

$ keytool -exportcert -rfc -keystore /etc/pki/java/cacerts -storepass changeit -alias {FQDN}

Добавить в cacert сертификат с сайта {FQDN}, если он самоподписанный:

echo | openssl s_client -connect {FQDN}:443 \
     | keytool -import -noprompt -trustcacerts -keystore /etc/pki/java/cacerts -storepass changeit -alias {FQDN}
FQDN = $ENV::CERT_DOMAIN
IP = $ENV::CERT_IP
[req]
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[req_distinguished_name]
countryName= RU
organizationName= COMPANY NAME
commonName= $FQDN
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = $FQDN
IP.1 = $IP
#!/usr/bin/sh
export CERT_DOMAIN={полное доменное имя}
export CERT_IP={IP-адрес}
CERT_NAME=$CERT_DOMAIN
FILE_CERT_CONFIG=cert.conf
[ -f $CERT_NAME.key ] && mv -f $CERT_NAME.key{,.prev}
[ -f $CERT_NAME.crt ] && mv -f $CERT_NAME.crt{,.prev}
openssl genrsa -out $CERT_NAME.key 2048
openssl req -new -out $CERT_NAME.csr -key $CERT_NAME.key -config $FILE_CERT_CONFIG
openssl x509 -req -days 3650 -extensions req_ext -extfile $FILE_CERT_CONFIG \
-in $CERT_NAME.csr -signkey $CERT_NAME.key -out $CERT_NAME.crt
rm -f $CERT_NAME.csr
echo
echo Certificate details:
echo
openssl x509 -text -in $CERT_NAME.crt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment