mnemo_cards/mnemo_cards_backend/certs/generate_simple_cert.sh

80 lines
3.2 KiB
Bash
Raw Normal View History

2025-11-16 11:25:27 +00:00
#!/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.)"