SSL
February 14, 2023
Генерация самоподписанного сертификата
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx-selfsigned.key -out nginx-selfsigned.crt
При использовании OpenSSL нужно также создать ключи Диффи-Хеллмана, которые нужны для поддержки PFS:
openssl dhparam -out dhparams.pem 4096
Источник: https://www.8host.com/blog/sozdanie-samopodpisannogo-ssl-sertifikata-dlya-nginx-v-ubuntu-16-04/
UPD: лучше использовать вариант ниже, с автогенерацией и использованием собственного центра сертификации:
#!/bin/bash if [ -z "$1" ] then echo "Please enter domain name and ip address to create a certificate for"; echo "e.g. domain.local 192.168.1.1" exit; fi if [ -z "$2" ] then echo "Please enter domain name and ip address to create a certificate for"; echo "e.g. domain.local 192.168.1.1" exit; fi COMMON_NAME=$1 COMMON_IP=$2 # # генерируем закрытый ключ центра сертификации openssl genrsa -out rootCA.key 2048 # # генерируем сертификат центра сертификации openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -subj "/C=CA/ST=None/L=NB/O=None/CN=domain.local" -out rootCA.pem # C=CA # Country Name # ST=None # State or Province Name (full name) # L=NB # Locality Name (eg, city) # O=None # Organization Name (eg, company) # CN=domain.local #Common Name (e.g. server FQDN or YOUR name) if [ -f $COMMON_NAME.key ]; then KEY_OPT="-key" else KEY_OPT="-keyout" fi >$COMMON_NAME.ext cat <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = $COMMON_NAME DNS.2 = www.$COMMON_NAME IP.1 = $COMMON_IP EOF SUBJECT="/C=RU/ST=None/L=Moscow/O=Kaspersky/CN=$COMMON_NAME" NUM_OF_DAYS=999 # Сформируем csr файл openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT $COMMON_NAME.key -subj "$SUBJECT" -out $COMMON_NAME.csr # Выпускаем сертификат: openssl x509 -req -in $COMMON_NAME.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out $COMMON_NAME.crt -days $NUM_OF_DAYS -sha256 -extfile $COMMON_NAME.ext rm $COMMON_NAME.ext # Сконвертировать pem в pfx для Windows: openssl pkcs12 -export -out rootCA.pfx -inkey rootCA.key -in rootCA.pem -password pass: