【原創】Docker下搭建OpenSSL Wordpress

背景

爲了方便記錄、管理自己的所思所想,很多小夥伴都會選擇在網上搭建屬於自己的博客。

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地址。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章