当前位置: 首页 > news >正文

【Wordpress】docker环境下wordpress网站安装ssl/tls证书

目录

一、前言

(一)ssl/tls是什么?

(二)docker的wordpress怎么下载?

二、正文

(一)docker环境的wordpress介绍

(二)配置步骤

1、加载Apache SSL模块

2、绑定SSL证书

3、链接配置文件

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

5、修改完成后重启容器 

6、配置wordpress访问地址


一、前言

简单介绍下wordpress、ssl的概念

(一)ssl/tls是什么?

安全套接字层 (SSL) 是一种加密安全协议。它最初由 Netscape 于 1995 年开发,旨在确保 Internet 通信中的隐私、身份验证和数据完整性。SSL 是如今使用的现代 TLS 加密的前身。实施 SSL/TLS 的网站的 URL 中带有“HTTPS”,而不是“HTTP”。

SSL/TLS 为何重要? 

最初,Web 上的数据是以明文形式传输的,任何人只要截获消息都可以读取。例如,如果消费者访问了购物网站,下了订单并在网站上输入了他们的信用卡号,那么该信用卡号将不加隐藏地在 Internet 上传播。

创建 SSL 就是为了纠正此问题并保护用户隐私。通过对用户和 Web 服务器之间传输的所有数据进行加密,SSL 可确保截获数据的人只能看到混乱的字符。消费者的信用卡号现在可以确保安全,仅在他们输入卡号的购物网站上可见。

SSL 还可以阻止某些类型的网络攻击:它对 Web 服务器进行身份验证,这非常重要,因为攻击者通常会尝试建立伪造网站来欺骗用户并窃取数据。它还可以防止攻击者篡改传输中的数据,就像药品容器上的防篡改封条一样。

SSL 和 TLS 是同一回事吗?

SSL 是另一个称为 TLS(传输层安全性)的协议的直接前身。在 1999 年,互联网工程任务组(IETF)提出了对 SSL 的更新。由于此更新是由 IETF 开发的,不再牵涉到 Netscape,因此名称更改为 TLS。SSL 的最终版本(3.0)与 TLS 的第一版本之间并无明显差异,应用名称更改只是表示所有权改变。

由于它们紧密地联系在一起,这两个术语经常互换使用并混为一谈。有些人仍然使用 SSL 来指代 TLS,其他人则使用术语“SSL/TLS 加密”,因为 SSL 仍然具有很大的知名度。

SSL 仍然没有落伍吗?

SSL 自 1996 年推出 SSL 3.0 以来未曾更新过,现已弃用。SSL 协议中存在多个已知漏洞,安全专家建议停止使用。实际上,大多数现代 Web 浏览器已彻底不再支持 SSL。

TLS 是依然在网络上实施的最新加密协议,尽管有许多人仍将其称为“SSL 加密”。这可能会使购买安全解决方案的消费者感到困惑。事实上,如今提供“SSL”的任何供应商提供的几乎肯定都是 TLS 保护,这已成为二十多年来的行业标准。但是,由于许多人仍在搜寻“SSL 保护”,因此这个术语在许多产品页面上仍然处于醒目位置。

什么是 SSL 证书?

SSL 只能由具有 SSL 证书(技术上称为“TLS 证书”)的网站来实现。SSL 证书就像身份证或徽章一样,证明某人就是他们所说的真实身份。SSL 证书由网站或应用程序的服务器存储并显示在 Web 上。

SSL 证书中最重要的信息之一是网站的公共密钥。公钥使得加密和身份验证成为可能。用户的设备查看公钥,并使用它与 Web 服务器建立安全的加密密钥。同时,Web 服务器还具有一个保密的私有密钥。私钥解密使用公钥加密的数据。

证书颁发机构(CA)负责颁发SSL证书。

至于怎么申请ssl证书,不在本文范围内,请自行百度,以后可能写怎么申请ssl证书的文章

(二)docker的wordpress怎么下载?

进入docker的公开镜像库:Docker Hub

 拉取wordpress镜像

docker pull wordpress:latest

运行wordpress容器,需要开放 80 和 443 端口

# 举个例子
docker run --name wordpress \
-p 80:80 \
-p 443:443 \
--link mysql:mysql \
-v /home/blog/wordpress:/var/www/html \
-tid wordpress:latest

# 网络模式使用 bridge的需要映射 80 和 433 端口
# 网络模式使用 host 的就不用配置

进入wordpress容器

docker exec -it wordpress /bin/bash

二、正文

(一)docker环境的wordpress介绍

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

(二)配置步骤

1、加载Apache SSL模块

在wordpress容器中输入a2enmod ssl

a2enmod ssl

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

# 输入命令
/etc/init.d/apache2 reload

2、绑定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

3、链接配置文件

从 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

4、配置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>

5、修改完成后重启容器 

docker restart wordpress

6、配置wordpress访问地址

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

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

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

相关文章:

  • 图像处理-高斯滤波器与图像的关系
  • Java实现银行卡号校验
  • 15张超详细的Python学习路线图,纯良心分享,零基础学习宝典
  • 虚拟机安装Arch Linux
  • 云计算推动重塑与转型,游戏行业进入以技术驱动“新纪元”
  • 22年8月工作笔记整理(前端)
  • 11---OpenCV:图像进阶操作之①轮廓②凸包操作
  • C语言运算符与表达式
  • Python从入门到实践:字节串与字符串
  • k8s教程:使用cert-manager证书管理工具在集群中提供https证书并自动续期
  • MIKE水动力笔记13_数字化海图2之克里金插值
  • QuantLib 金融计算库
  • OpenSergo CloudWeGo 共同保障微服务运行时流量稳定性
  • 全网最牛自动化测试框架系列之pytest(8)-参数化
  • App Store上架iOS App的详细流程
  • 【comparator, comparable】小总结
  • es6(二):字符串的扩展
  • Facebook AccountKit 接入的坑点
  • Git学习与使用心得(1)—— 初始化
  • Java,console输出实时的转向GUI textbox
  • magento2项目上线注意事项
  • python_bomb----数据类型总结
  • REST架构的思考
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • swift基础之_对象 实例方法 对象方法。
  • Vue 重置组件到初始状态
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 初探 Vue 生命周期和钩子函数
  • 解析 Webpack中import、require、按需加载的执行过程
  • 手机端车牌号码键盘的vue组件
  • 跳前端坑前,先看看这个!!
  • 怎么将电脑中的声音录制成WAV格式
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $.ajax中的eval及dataType
  • (MATLAB)第五章-矩阵运算
  • (Matlab)使用竞争神经网络实现数据聚类
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (ros//EnvironmentVariables)ros环境变量
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (黑马C++)L06 重载与继承
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (未解决)macOS matplotlib 中文是方框
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)nsfocus-绿盟科技笔试题目
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • **PHP二维数组遍历时同时赋值
  • *p++,*(p++),*++p,(*p)++区别?