#!/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()