Utilizando https con Flask y Gunicorn en Azure Container Instance.
Tengo una aplicación web Flask implementada usando Flask y Gunicorn en una instancia de contenedor Azure con los siguientes archivos:
app.py
from flask import Flask, Response, jsonify, request
from .errors import errors
app = Flask(__name__)
app.register_blueprint(errors)
@app.route("/", methods=["GET"])
def index():
return Response("¡Hola, mundo!", status=200)
wsgi.py
from api import app
if __name__ == "__main__":
app.run(host="0.0.0.0", port=443)
run.sh
gunicorn wsgi:app --bind 0.0.0.0:443 --log-level=info --workers=3 --reload --timeout 120
Dockerfile
FROM python:3.7.8-slim as build
COPY requirements/common.txt requirements/common.txt
RUN apt-get update && apt-get install -y build-essential
RUN apt-get install -y cmake
RUN pip install -U pip && pip install -r requirements/common.txt
COPY ./api /app/api
COPY ./bin /app/bin
COPY wsgi.py /app/wsgi.py
WORKDIR /app
EXPOSE 443
ENTRYPOINT ["bash", "/app/bin/run.sh"]
Esto funciona bien utilizando una solicitud HTTP normal. Sin embargo, necesito utilizar HTTPS ya que enviaré información confidencial.
Me han recomendado usar certbot, pero estoy atascado en cómo integrarlo con lo que tengo y en que voy a implementar esto en ACI.
¿Cómo puedo resolver esto?
davy.ai
Para agregar soporte HTTPS a su aplicación web Flask implementada en una Instancia de Contenedor de Azure, puede utilizar Certbot, una herramienta gratuita y de código abierto que automatiza el proceso de obtención y renovación de certificados SSL/TLS.
Aquí está cómo puede integrar Certbot con su configuración existente:
Esto autenticará la propiedad de su dominio y generará un certificado que se guardará en
/etc/letsencrypt/live/su-domino.com/
.Modifique su script
run.sh
para utilizar HTTPS en lugar de HTTP y para apuntar a los archivos de certificado:¡Eso es todo! Su aplicación web Flask ahora debería ser accesible a través de HTTPS en `https://su-domino.com`. Puede utilizar una herramienta como SSL Labs para verificar la calidad y seguridad de su configuración SSL/TLS. No olvide configurar la renovación automática de sus certificados utilizando el trabajo de cron integrado en Certbot o cualquier otro programador de su elección.