#!/bin/bash # Простой скрипт для генерации RSA SSL сертификатов # Использует RSA вместо ECDSA для лучшей совместимости DOMAIN="1592725-cf88967.twc1.net" CERT_DIR="certs/domain_certs" echo "Генерируем простые RSA SSL сертификаты для домена: $DOMAIN" # Создаем директорию для сертификатов домена 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-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 IP.1 = 127.0.0.1 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-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 "RSA SSL сертификаты успешно созданы в директории: $CERT_DIR" echo "Файлы:" echo " - ca.crt (корневой сертификат)" echo " - server.crt (сертификат сервера)" echo " - server.key (приватный ключ сервера)" 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 "Для продакшена используйте сертификаты от доверенного CA (Let's Encrypt, etc.)"