WordPress博客运维驿站信息安全

【原创】Docker下搭建OpenSSL Wordpress

2019-01-21  本文已影响7人  c6ce4548060f

背景

为了方便记录、管理自己的所思所想,很多小伙伴都会选择在网上搭建属于自己的博客。

wordpress产品可以快速实现这样的需求。

众所周知,http协议是以名文传输,为了确保传输过程中,敏感信息不被第三方嗅探,本文将带大家实现http协议下,配置、启用ssl协议,完成个人博客安全传输访问。

本文记录、分享如何利用Docker,完成ssl协议下的个人博客搭建。wordpress和mysql分别运行在不同的两个容器中,而openssl、wordpress位于同一个镜像。

(一)、拉取镜像

在正式搭建之前,需要先从docker的hub上,拉取(pull)所需的镜像文件。

mysql

wordpress

命令

docker pull name

1、mysql

docker pull mysql

2、wordpress

docker pull wordpress

(二)、mysql镜像启动和配置

启动mysql镜像。

docker run -d  -e MYSQL_ROOT_PASSWORD=mysql_root_password–name mysql_ssl mysql

-d参数,容器在后端运行;

-e参数,设定数据库的root登录密码。详见页面:https://hub.docker.com/_/mysql

–name:命名即将运行的容器。

docker exec -it mysql_ssl /bin/bash

使用exec方式进入命令行的交互模式,并返回一个新的shell,不影响上一步已运行程序。

apt-get update -y && apt-get install net-tools -y&& apt-get install vim -y

镜像文件为了减少容量,所以裁剪了不必要的工具,但使用者可根据需要自行安装。以下命令实现软件列表的更新,并安装net-tools和vim工具,其中net-tools工具可完成ip地址查看、监听的端口,以及已经建立的连接等基本信息。

mysql -u root -p

以root用户登录mysql数据库。

create database wordpress;

创建名为wordpress的数据库。

CREATE USER ‘user’@’%’ IDENTIFIED WITHmysql_native_password BY ‘user_password’;

因mysql高版本(比如8.0)的原因,采用了新的验证机制,‘%’表示允许所有远程主机连接。参考: https://blog.csdn.net/xiaoxinshuaiga/article/details/82798919

grant all onwordpress.* to ‘user’@’%’ with grant option;

flush privileges;

设置权限,并使其生效。

(三)、wordpress ssl配置

启动镜像

在原版wordpress镜像上,配置ssl,然后生成新的镜像,以供后续使用。

docker run –name wordpress -d wordpress

以后台方式启动wordpress镜像,并为容器取名为wordpress。

docker exec -it wordpress /bin/bash

以另一个新的shell,交互式访问已运行的容器。

apt-get update -y && apt-get install net-tools -y&& apt-get install vim -y

安装常用的小工具。类同于“mysql镜像启动与配置” 中相关内容的描述。

OpenSSL配置部分

配置openssl,主要在服务器本地产生CA证书,并用证书生成服务端、客户端使用的证书。参考:https://blog.csdn.net/setoy/article/details/78441613

a2enmod ssl

启动ssl相关模块

openssl genrsa -des3 -out server.key 1024

创建第三方CA机构签署证书。向第三方提交一个“生成证书请求文件(CSR)”。

-des3选项能对私钥进行加密,采用此选项会在后续的设置中提示你输入密码(只是加密私钥,https访问时不需要这个密码),这样会在当前目录下生成server.key私钥文件。

openssl req -new -key server.key -out server.csr

生成请求文件CSRCertificate Signing Request)。这里还需提供一系列信息(如果不填写,也不影响正常功能),比如:

Country Name:

Province Name:

Common Name:

Email:

openssl x509 -req -days 3650 -in server.csr -signkeyserver.key -out server.crt

自己签发证书。3650表示证书有效期10年。

cp server.crt/etc/ssl/certs

cp server.key /etc/ssl/private

复制到SSL目录。

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

vim /etc/apache2/sites-enabled/default-ssl.conf

修改apache配置文件。在DocumentRoot中加入内容:

SSLEngineOn

SSLOptions +StrictRequire

SSLCertificateFile/etc/ssl/certs/server.crt

SSLCertificateKeyFile /etc/ssl/private/server.key

/etc/init.d/apache2 stop

停用apache2。此时,容器会自动关闭,并停止。

docker commit –author “author_name

–message “messages” wordpress wordpress_ssl:v1

生成镜像。取名为“wordpress_ssl:v1”。

wordpress 镜像启动和配置

docker run -p xx:443 –name wordpress_ssl -eWORDPRESS_DB_HOST=mysql_ip:3306  -e WORDPRESS_DB_USER=xxxx -eWORDPRESS_DB_PASSWORD=xxxx -it wordpress_ssl:v1

启动容器。采用交互式启动,因为需要输入rsa密码。

将容器置入后台运行。Ctrl+P+Q即可退出控制台,此时回到母体主机,通过命令:

docker ps 

可查看到容器是否在后端正常运行。

(四)其它

docker logs 容器名。查看后台运行的容器的运行状态。

查看容器分配的IP地址。

通过命令:

docker inspect 容器名称 | grep IPAddress

wordpress容器连接mysql容器时,需要用到mysql的ip地址。

上一篇 下一篇

猜你喜欢

热点阅读