es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Instale Certbot en su máquina host (no dentro del contenedor):
      sudo apt-get update && sudo apt-get install -y certbot
      
    2. Genere el/los certificado(s) SSL/TLS para su dominio:
      sudo certbot certonly --standalone -d su-domino.com
      

      Esto autenticará la propiedad de su dominio y generará un certificado que se guardará en /etc/letsencrypt/live/su-domino.com/.

    3. Modifique su script run.sh para utilizar HTTPS en lugar de HTTP y para apuntar a los archivos de certificado:

      gunicorn wsgi:app --bind 0.0.0.0:443 --log-level=info --workers=3 --reload --timeout 120 --certfile /etc/letsencrypt/live/su-domino.com/fullchain.pem --keyfile /etc/letsencrypt/live/su-domino.com/privkey.pem
      

    4. Actualice su Dockerfile para copiar los archivos de certificado dentro del contenedor:
      COPY --from=build /etc/letsencrypt/live/su-domino.com /etc/letsencrypt/live/su-domino.com
      
    5. Compile e implemente su imagen de Docker en su Instancia de Contenedor de Azure como antes.

    ¡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.

Comments are closed.