docker apache部署ssl

本文将介绍本地docker apache开发环境下部署ssl的方法,我们使用window系统为例

1.通过openssl创建自己的密钥和证书

打开终端输入:

<code>openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt/<code>


在此过程中,几乎没有选项是您必须填写,除了“ Common Name”(通用名称)外,其余大部分都可以随意填写。但是Common Name必须填写您要保护的域名,我们假设域名为dev

<code>Common Name (e.g. server FQDN or YOUR name) []: dev/<code>


最后,您会在运行命令行的文件夹下找到两个文件server.key和server.crt。

2.编写您的虚拟主机配置文件

文件名称:dev.conf

<code><virtualhost>
DocumentRoot "/var/www/html/"
ServerName dev
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/server.key"
/<virtualhost>/<code>


/var / www / html等/是代码默认路径。/ etc / apache2中的/ SSL是我们放置证书的位置。您可以根据自己的需要进行调整。

3.将所有生成的文件放入docker镜像

接下来,我们将编写Dockerfile将所有内容放入新的Docker映像中。让我们使用php:7.1.0-apache作为基本映像。以下Dockerfile的示例:

<code>FROM php:7.1-apache
RUN apt-get update && \\
apt-get install -y \\
zlib1g-dev
COPY server.crt /etc/apache2/ssl/server.crt
COPY server.key /etc/apache2/ssl/server.key
COPY dev.conf /etc/apache2/sites-enabled/dev.conf
RUN docker-php-ext-install mysqli pdo pdo_mysql zip mbstring
RUN a2enmod rewrite
RUN a2enmod ssl
RUN service apache2 restart/<code>


以上Dockerfile 所进行的操作:

1.将密钥文件复制到/ etc/apache2/ssl中;

2.将虚拟主机配置文件(dev.conf)复制到/etc/ apache2/sites-enabled /中;

3.通过内置的安装必要的php扩展名在安装程序docker-php-ext-install

4.中启用所需的apache模块,包括rewrite和ssl。

5.重新启动apache2以使每个更改都能正常工作。

4.构建并运行您的Docker镜像

<code>docker build ./<code>


最后 我们将得到镜像版本号 例如:

<code>68b57f0b6302/<code>


我们将容器作为我们的http服务器运行。同时支持80和443端口。

<code>docker run -p 80:80 -p 443:443 68b57f0b6302 apache2-foreground/<code>


您可以在浏览器中检查http:// dev和https:// dev。因为我们没有在/ var / www / html中添加任何内容。因此应该是apache2返回的错误页面。但是我们可以看到。它正在运行。

在这里插入图片描述对于https,在访问时,我们直接在advance中选择例外即可

在这里插入图片描述现在,它可以工作了。您可以根据需要使用其他域名。只需更改虚拟主机配置文件中的相应ServerName。


分享到:


相關文章: