mnemo_cards/mnemo_cards_backend/certs/generate_domain_cert.sh
2025-11-16 14:25:27 +03:00

79 lines
3.3 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт для генерации SSL сертификатов для домена 1592725-cf88967.twc1.net
# Этот скрипт создает самоподписанные сертификаты для разработки/тестирования
DOMAIN="1592725-cf88967.twc1.net"
CERT_DIR="certs/domain_certs"
echo "Генерируем SSL сертификаты для домена: $DOMAIN"
# Создаем директорию для сертификатов домена
mkdir -p $CERT_DIR
# Генерируем приватный ключ для CA
openssl ecparam -name prime256v1 -genkey -noout -out $CERT_DIR/ca.key
# Создаем самоподписанный CA сертификат
openssl req -new -x509 -sha256 -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"
# Генерируем приватный ключ для сервера
openssl ecparam -name prime256v1 -genkey -noout -out $CERT_DIR/server.key
# Создаем запрос на сертификат для сервера
openssl req -new -sha256 -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 ecparam -name prime256v1 -genkey -noout -out $CERT_DIR/client.key
openssl req -new -sha256 -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 "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 $CERT_DIR -a 0.0.0.0 -p 443"
echo ""
echo "ВНИМАНИЕ: Это самоподписанные сертификаты для разработки!"
echo "Для продакшена используйте сертификаты от доверенного CA (Let's Encrypt, etc.)"