Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

724
Vistas
Habilite Apache SSL en Docker para el desarrollo local

Estoy dockerizando nuestra antigua aplicación actual. Usamos varios servicios, pero el que tengo problemas es php, apache y, específicamente, https para apache. Estoy usando la imagen "php:5.6.30-apache", así que tengo php y apache preinstalados.

Ahora cambié el "000-default.conf" con este contenido:

 <VirtualHost *:80> ServerAdmin admin@admin.io DocumentRoot /var/www/html/app/htdocsAdmin ServerName admin.local.app.io CustomLog /var/log/apache2/app.admin.access.log "trueip_combined" ErrorLog /var/log/apache2/app.admin.error.log <Directory /var/www/html/app/htdocsAdmin> AllowOverride Options FileInfo AuthConfig Require all granted </Directory> </VirtualHost>

Este es mi archivo docker:

 FROM php:5.6.30-apache MAINTAINER Tzook Bar Noy ADD default /etc/apache2/sites-available/000-default.conf RUN apt-get update \ && apt-get install -y apt-utils \ && apt-get install -y php5-dev php5-memcached \ && apt-get install -y memcached RUN apt-get update && apt-get install -y apt-utils RUN apt-get install -y libz-dev libmemcached-dev RUN pecl install memcached-2.2.0 RUN echo extension=memcached.so >> /usr/local/etc/php/conf.d/memcached.ini RUN a2enmod rewrite RUN a2enmod ssl EXPOSE 80 EXPOSE 443

No se preocupe por las cosas de Memcached, solo vea que habilito "ssl" y expongo los puertos 80,443

Esto se ejecuta con docker-compose:

 php: build: context: ./php dockerfile: Dockerfile ports: - "80:80" - "443:443" volumes: - ./../../:/var/www/html networks: - appnet tty: true

pero después de todo eso, sigo recibiendo esto de Chrome:

 "ERR_SSL_PROTOCOL_ERROR"

Como se solicitó en los comentarios, mi respuesta "docker ps": ingrese la descripción de la imagen aquí

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Además de habilitar ssl y exponer el puerto 443, debe crear un certificado (autofirmado) + clave privada y asegurarse de que Apache tenga acceso a ellos.

Recomiendo usar openSSL para crear un certificado autofirmado:

 openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj \ "/C=../ST=...../L=..../O=..../CN=..." \ -keyout ./ssl.key -out ./ssl.crt

En lugar de los puntos (...) complete su código de país de 2 letras (/C), el nombre de su estado o provincia (/ST), el nombre de su localidad (/L), el nombre de su organización ( /O) y su servidor FQDN (/CN)

Luego agregue las siguientes líneas a su archivo docker:

 COPY ./path/to/ssl.crt /etc/apache2/ssl/ssl.crt COPY ./path/to/ssl.key /etc/apache2/ssl/ssl.key RUN mkdir -p /var/run/apache2/

No estoy seguro de que la última línea sea realmente necesaria, pero en mi contenedor docker la carpeta aún no existía, lo que provocó que Apache fallara al iniciarse.

Finalmente, en su archivo 000-default.conf necesita agregar algo como esto:

 <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/ssl.crt SSLCertificateKeyFile /etc/apache2/ssl/ssl.key .... </VirtualHost>

Tenga en cuenta que cuando utiliza certificados autofirmados, la mayoría de los navegadores le avisarán que "Su conexión no es segura" (Firefox) o "Certificado no válido" (Chrome). Esto se debe a que no existe una cadena de seguridad válida para una CA de confianza. La mayoría de los navegadores le permiten continuar con su solicitud o agregar el sitio como una excepción para que ya no se muestre la advertencia.

about 4 years ago · Santiago Trujillo Denunciar

0

Así es como habilité Apache SSL en Docker para el desarrollo local. Esto es con Docker ejecutando una imagen de Ubuntu en macOS (aunque mkcert también funciona con Linux y Windows):

• En macOS, instale mkcert :

 brew install mkcert brew install nss # if you use Firefox

mkcert facilita la creación e instalación de certificados SSL para uso de desarrollo local.

• Crear los certificados SSL:

 mkcert mysite.localhost someothersite.localhost localhost 127.0.0.1 ::1

Esto los instalará en macOS por ti, pero también dejará una copia de ellos en el directorio de trabajo actual:

 mysite.localhost+4-key.pem mysite.localhost+4.pem

• Haga que los dos archivos .pem estén disponibles para su contenedor Docker. por ejemplo: muévalos con los archivos de configuración de su contenedor y agregue algo como esto:

 - ./config/ssl:/etc/apache2/ssl/

• Abra el puerto 443 en el docker-compose del contenedor:

 - "443:443"

(Y ciertamente debería EXPOSE 443 en la imagen también, aunque por alguna razón funcionó para mí sin hacerlo). (Editar: EXPOSE es puramente documentación y no realiza acciones según la documentación)

• Habilite SSL en Apache:

 RUN ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load

Aunque, técnicamente, primero hice esto desde mi contenedor en ejecución, seguido de un apachectl restart . Hace que sea más fácil probar cosas y asegurarse de que todo funcionó antes de comprometerse a reconstruir la imagen.

• Configure su(s) sitio(s) web en Apache para que usen SSL editando mysite.localhost y cualquier otro dominio con el que desee usar SSL:

 <VirtualHost *:443> … SSLEngine on SSLCertificateFile "/etc/apache2/ssl/clickandspeak.localhost+4.pem" SSLCertificateKeyFile "/etc/apache2/ssl/clickandspeak.localhost+4-key.pem" … </VirtualHost>

… simplemente duplique su configuración anterior de <VirtualHost *:80> , cambie el puerto a 443 y agregue las tres líneas anteriores.

Reconstruya la imagen y reinicie el contenedor en el camino según sea necesario.

…y voila!

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda