79 lines
3.2 KiB
Bash
Executable file
79 lines
3.2 KiB
Bash
Executable file
#!/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.)"
|