68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Servidor HTTPS para API FastAPI en puerto 9443
|
|
"""
|
|
import uvicorn
|
|
import ssl
|
|
import sys
|
|
import os
|
|
from pathlib import Path
|
|
|
|
def main():
|
|
# Configuración SSL
|
|
ssl_keyfile = "ssl/private.key"
|
|
ssl_certfile = "ssl/certificate.crt"
|
|
|
|
# Verificar que existan los archivos SSL
|
|
if not os.path.exists(ssl_keyfile):
|
|
print(f"❌ Error: No se encuentra {ssl_keyfile}")
|
|
sys.exit(1)
|
|
|
|
if not os.path.exists(ssl_certfile):
|
|
print(f"❌ Error: No se encuentra {ssl_certfile}")
|
|
sys.exit(1)
|
|
|
|
print("🔐 Iniciando servidor HTTPS en puerto 9443...")
|
|
print(f"📁 Certificado: {ssl_certfile}")
|
|
print(f"🔑 Llave privada: {ssl_keyfile}")
|
|
print("🌐 URLs disponibles:")
|
|
print(" - https://104.192.7.152:9443/docs")
|
|
print(" - https://cpanel-a24.aduanasoft.com:9443/docs")
|
|
print(" - https://104.192.7.152:9443/api/health")
|
|
print(" - https://104.192.7.152:9443/api/nodes")
|
|
|
|
try:
|
|
# Configurar SSL context
|
|
ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
|
ssl_context.load_cert_chain(ssl_certfile, ssl_keyfile)
|
|
|
|
# Iniciar servidor
|
|
uvicorn.run(
|
|
"main:app",
|
|
host="0.0.0.0",
|
|
port=9443,
|
|
ssl_keyfile=ssl_keyfile,
|
|
ssl_certfile=ssl_certfile,
|
|
reload=False,
|
|
workers=1,
|
|
access_log=True,
|
|
log_level="info"
|
|
)
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error al iniciar servidor HTTPS: {e}")
|
|
print("\n🔧 Diagnóstico:")
|
|
|
|
# Diagnóstico SSL
|
|
try:
|
|
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
|
context.load_cert_chain(ssl_certfile, ssl_keyfile)
|
|
print("✅ Certificados SSL válidos")
|
|
except Exception as ssl_error:
|
|
print(f"❌ Error en certificados SSL: {ssl_error}")
|
|
|
|
sys.exit(1)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|