Данная ситуация часто возникает у разработчиков сайтов, либо у тех кто разворачивает внутри локальной сети свои сервисы, которые требуют https. Чтобы решить данную проблему, нужно создать свой корневой сертификат. И добавить его в доверенные в хранилище ОС.
Очень в этом помог пост на stack overflow
И так, для генерации сертификатов понадобиться 3 файла
1. create_root_cert_and_key.sh - создает корневой сертификат
#!/usr/bin/env bash openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
2. create_certificate_for_domain.sh - создание сертификата для домена, на основе корневого
#!/usr/bin/env bash if [ -z "$1" ] then echo "Please supply a subdomain to create a certificate for"; echo "e.g. www.mysite.com" exit; fi if [ ! -f rootCA.pem ]; then echo 'Please run "create_root_cert_and_key.sh" first, and try again!' exit; fi if [ ! -f v3.ext ]; then echo 'Please download the "v3.ext" file and try again!' exit; fi # Create a new private key if one doesnt exist, or use the xeisting one if it does if [ -f device.key ]; then KEY_OPT="-key" else KEY_OPT="-keyout" fi DOMAIN=$1 COMMON_NAME=${2:-*.$1} SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME" NUM_OF_DAYS=825 openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext # move output files to final filenames mv device.csr "$DOMAIN.csr" cp device.crt "$DOMAIN.crt" # remove temp file rm -f device.crt; echo echo "###########################################################################" echo Done! echo "###########################################################################" echo "To use these files on your server, simply copy both $DOMAIN.csr and" echo "device.key to your webserver, and use like so (if Apache, for example)" echo echo " SSLCertificateFile /path_to_your_files/$DOMAIN.crt" echo " SSLCertificateKeyFile /path_to_your_files/device.key"
3. v3.ext
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = %%DOMAIN%%
В начале создаем корневой сертификат (create_root_cert_and_key.sh), потом сертификат для домена create_certificate_for_domain.sh test.ru test.ru
Если при создании сертификата для домена указать домен 1 раз, то будет создан willcard сертификат (*.test.ru)
Теперь добавляем корневой сертификат в доверенные.
Windows (проверено на десятке):
Теперь если перезапустить браузер, то тестовый сайт откроется уже без предупреждений и с валидным сертификатом.
Комментарии