#!/bin/bash # Скрипт для генерации SSL сертификатов для HTTPS сервера # Отдельно от certificate pinning сертификатов для мобильного приложения DOMAIN="1592725-cf88967.twc1.net" CERT_DIR="certs/https_server" echo "Генерируем SSL сертификаты для HTTPS сервера домена: $DOMAIN" echo "ВНИМАНИЕ: Эти сертификаты НЕ для certificate pinning в мобильном приложении!" echo "" # Создаем директорию для HTTPS серверных сертификатов mkdir -p $CERT_DIR # Генерируем RSA приватный ключ для CA openssl genrsa -out $CERT_DIR/ca.key 2048 # Создаем самоподписанный CA сертификат openssl req -new -x509 -key $CERT_DIR/ca.key -out $CERT_DIR/ca.crt -days 3650 \ -subj "/C=RU/ST=Moscow/L=Moscow/O=MnemoCards/OU=IT/CN=MnemoCards-HTTPS-CA" # Генерируем RSA приватный ключ для сервера openssl genrsa -out $CERT_DIR/server.key 2048 # Создаем запрос на сертификат для сервера openssl req -new -key $CERT_DIR/server.key -out $CERT_DIR/server.csr \ -subj "/C=RU/ST=Moscow/L=Moscow/O=MnemoCards/OU=IT/CN=$DOMAIN" # Создаем конфигурационный файл для SAN (Subject Alternative Name) cat > $CERT_DIR/server.conf << EOF [req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] C = RU ST = Moscow L = Moscow O = MnemoCards OU = IT CN = $DOMAIN [v3_req] keyUsage = keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = $DOMAIN DNS.2 = localhost DNS.3 = 127.0.0.1 IP.1 = 127.0.0.1 IP.2 = 0.0.0.0 EOF # Генерируем сертификат сервера с SAN openssl x509 -req -in $CERT_DIR/server.csr -CA $CERT_DIR/ca.crt -CAkey $CERT_DIR/ca.key \ -CAcreateserial -out $CERT_DIR/server.crt -days 3650 -sha256 \ -extensions v3_req -extfile $CERT_DIR/server.conf # Генерируем клиентский сертификат (опционально, для мобильных приложений) openssl genrsa -out $CERT_DIR/client.key 2048 openssl req -new -key $CERT_DIR/client.key -out $CERT_DIR/client.csr \ -subj "/C=RU/ST=Moscow/L=Moscow/O=MnemoCards/OU=IT/CN=MnemoCards-HTTPS-Client" openssl x509 -req -in $CERT_DIR/client.csr -CA $CERT_DIR/ca.crt -CAkey $CERT_DIR/ca.key \ -CAcreateserial -out $CERT_DIR/client.crt -days 3650 -sha256 echo "" echo "HTTPS серверные SSL сертификаты успешно созданы в директории: $CERT_DIR" echo "Файлы:" echo " - ca.crt (корневой сертификат для HTTPS сервера)" echo " - server.crt (сертификат HTTPS сервера)" echo " - server.key (приватный ключ HTTPS сервера)" echo " - client.crt (клиентский сертификат)" echo " - client.key (приватный ключ клиента)" echo "" echo "Для запуска HTTPS сервера используйте:" echo "dart run lib/main.dart --certs $(pwd)/$CERT_DIR -a 0.0.0.0 -p 443" echo "" echo "ВНИМАНИЕ:" echo " - Эти сертификаты ТОЛЬКО для HTTPS сервера" echo " - Certificate pinning сертификаты остаются в certs/ (не трогаем)" echo " - Для продакшена используйте сертификаты от доверенного CA (Let's Encrypt, etc.)"