Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

725
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda