Docker 环境下 WordPress 部署 SSL/TLS 证书

本文使用的是 docker 官方 wordpress:last 镜像,镜像使用的是 apache2,所以我们按照 apache 配置 SSL 证书的方法配置即可。

一、配置步骤

1、进入 wordpress 容器

docker exec -it wordpress /bin/bash

2、加载 Apache SSL 模块(容器内执行)

a2enmod ssl

第一次会加载,并且提示重启 Apache,我们直接从重启容器即可,也可以直接重启 Apache。

/etc/init.d/apache2 reload

3、绑定SSL证书

Apache 加载 SSL 模块后,会在 /etc/apache2/sites-available 下生成 default-ssl.conf 文件,编辑该文件,可以看到:

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

上述两行配置就是证书的存放位置,我们只需要把第三方可信CA签发的证书相应的文件上传至对应位置即可。

ssl-cert-snakeoil.pem 为证书,文件内容:
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

ssl-cert-snakeoil.key 为密钥,文件内容:
-----BEGIN PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END PRIVATE KEY-----

先把 ssl-cert-snakeoil.pem 和 ssl-cert-snakeoil.key 上传到宿主机。然后直接用docker cp将文件复制进wordpress容器中

docker cp 宿主机文件路径/ssl-cert-snakeoil.pem 容器名:/etc/ssl/certs
docker cp 宿主机文件路径/ssl-cert-snakeoil.key 容器名:/etc/ssl/private

4、链接配置文件

从 apache 的配置文件 apache2.conf 可以看到,apache 只会读取 /etc/apache2/sites-enabled 目录的配置文件,所以需要把 /etc/apache2/sites-available 下的 default-ssl.conf 文件链接到 /etc/apache2/sites-enabled 目录下。

ln -s /etc/apache2/sites-available/default-ssl.conf 
/etc/apache2/sites-enabled/default-ssl.conf

5、配置 http 请求强制跳转到 https

编辑/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80> </VirtualHost>标签中增加下面的配置:

<Directory "/var/www/html"> 
    RewriteEngine   on
    RewriteBase /
    # FORCE HTTPS
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</Directory>

6、修改完成后重启容器

docker restart wordpress

7、配置 wordpress 访问地址

一定要保证 https 和 http 两种方式都能正常访问网站,才能改这个配置,否则可能导致网站无法访问。

进入wordpress后台中,【设置】-【常规】中配置WordPress 地址(URL)、站点地址(URL)两个地址的 http协议 修改为 https协议 并保存。

Docker 环境下 WordPress 部署 SSL/TLS 证书

或者直接在 wordpress 数据库的 wp-options 表修改。

 

参考:https://blog.csdn.net/ET1131429439/article/details/126627144