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

79 lines
3.2 KiB
Bash
Executable file
Raw Permalink 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
# Простой скрипт для генерации 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.)"