У меня есть виртуальная машина (Ubuntu 18.04), работающая на Hyper-v.Эта виртуальная машина является докером.Итак, у меня есть стек Lamp в отдельном сервисе докеров.Я выставил порты 80 и 443 в службе apache с присвоенными сертификатами.В конце концов, когда я пытаюсь проверить в браузере https://localhost, я получаю ОТКАЗ ОТ СОЕДИНЕНИЯ.
Тестирование с использованием telnet:
telnet localhost 443
Но я получил это сообщение
Соединение закрыто чужим хостом
Тестирование с использованием curl:
curl -vk https://localhost
Но я получил это сообщение
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL при подключении к localhost: 443
Когда я тестирую через порт 80, все в порядке.
Apache Dockerfile
ARG APACHE_VERSION="2.4.32"
FROM httpd:${APACHE_VERSION:+${APACHE_VERSION}-}alpine
RUN apk update; \
apk upgrade \
apk add apache2-ssl \
apk add --update openssl \
apk add curl
RUN apk add ca-certificates && rm -rf /var/cache/apk/*
COPY my-certificate.crt /usr/local/share/ca-certificates/
COPY my-certificate.key /usr/local/share/ca-certificates/
COPY my-certificate.crt /usr/share/ca-certificates/
RUN update-ca-certificates --fresh
# Copy apache vhost file to proxy php requests to php-fpm container
COPY portal.apache.conf /usr/local/apache2/conf/portal.apache.conf
RUN echo "Include /usr/local/apache2/conf/portal.apache.conf" \
>> /usr/local/apache2/conf/httpd.conf
RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf
EXPOSE 80 443
APACHEDOCKER-COMPOSER
apache:
build:
context: './apache/'
args:
APACHE_VERSION: ${APACHE_VERSION}
restart: always
depends_on:
- php72
- mysql8
networks:
- frontend
- backend
environment:
ENV: "${ENV}"
ports:
- "80:80"
- "443:443"
volumes:
- ${PROJECT_ROOT}/:/var/www/html/
- /etc/ssl:/etc/ssl
container_name: apache
APACHE.CONF
ServerName localhost
LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so
LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so
LoadModule ssl_module /usr/local/apache2/modules/mod_ssl.so
<VirtualHost *:80>
# Proxy .php requests to port 9000 of the php-fpm container
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php72:9000/var/www/html/$1
DocumentRoot /var/www/html/
<Directory /var/www/html/>
DirectoryIndex index.php index.html
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Send apache logs to stdout and stderr
CustomLog /proc/self/fd/1 common
ErrorLog /proc/self/fd/2
</VirtualHost>
<VirtualHost *:443>
ServerName localhost:443
SSLEngine On
SSLCertificateFile /usr/local/share/ca-certificates/my-certificate.crt
SSLCertificateKeyFile /usr/local/share/ca-certificates/my-certificate.key
</VirtualHost>
Я ожидаю, когда я запускаю https://localhost, я получаю содержимое index.html, но я получаю ERR_CONNECTION_CLOSED