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