docker apache部署ssl

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

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

打开终端输入:

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

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

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

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

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

文件名称:dev.conf

<VirtualHost *:443>
    DocumentRoot "/var/www/html/"
    ServerName dev
    SSLEngine on
    SSLCertificateFile "/etc/apache2/ssl/server.crt"
    SSLCertificateKeyFile "/etc/apache2/ssl/server.key"
</VirtualHost>

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

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

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

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

以上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镜像

docker build .

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

68b57f0b6302

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

docker run -p 80:80 -p 443:443 68b57f0b6302 apache2-foreground

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

在这里插入图片描述对于https,在访问时,我们直接在advance中选择例外即可
在这里插入图片描述现在,它可以工作了。您可以根据需要使用其他域名。只需更改虚拟主机配置文件中的相应ServerName。

如你喜欢以上内容,可以关注微信公众号:Robert的书签

猜你喜欢

转载自blog.csdn.net/zengjianze/article/details/105313722