当前位置: 首页 > 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的详细流程
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CentOS6 编译安装 redis-3.2.3
  • ES6之路之模块详解
  • gulp 教程
  • jQuery(一)
  • mysql_config not found
  • Next.js之基础概念(二)
  • React组件设计模式(一)
  • 包装类对象
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 开源SQL-on-Hadoop系统一览
  • 实战|智能家居行业移动应用性能分析
  • 问题之ssh中Host key verification failed的解决
  • 想写好前端,先练好内功
  • 学习JavaScript数据结构与算法 — 树
  • 2017年360最后一道编程题
  • Java数据解析之JSON
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​什么是bug?bug的源头在哪里?
  • #mysql 8.0 踩坑日记
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)(1.13) SiK无线电高级配置(五)
  • (1)Nginx简介和安装教程
  • (30)数组元素和与数字和的绝对差
  • (8)STL算法之替换
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (学习日记)2024.01.19
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)VirtualBox安装增强功能
  • (转)Google的Objective-C编码规范
  • (转)http-server应用
  • *上位机的定义
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net FrameWork总结