根据docker部署nginx并且实现https

目录

一、Docker中启用HTTPS有几个重要的原因

二、https介绍

三、https过程

四、安装docker-20.10.18

五、如何获取证书

通过阿里云获取证书

六、docker部署nginx并且实现https

6.1准备证书

6.2准备nginx.conf 和 index.html文件

6.3生成容器

6.4浏览器验证证书


一、Docker中启用HTTPS有几个重要的原因

  1. 安全性:HTTPS通过加密数据传输,可以确保数据在传输过程中不被窃听或篡改。这对于保护敏感信息(如用户凭据、支付信息等)的传输至关重要。

  2. 数据完整性:HTTPS可以验证数据的完整性,确保数据在传输过程中没有被篡改或损坏。

  3. 信任度:使用HTTPS可以增强用户对网站的信任度,因为浏览器通常会显示安全的锁图标或绿色地址栏来指示连接是安全的。

  4. SEO优化:搜索引擎(如Google)通常会更喜欢使用HTTPS的网站,并将其排名更靠前。因此,启用HTTPS可以对网站的搜索引擎优化(SEO)产生积极影响。

  5. 合规性:一些法规和标准要求网站必须使用HTTPS来保护用户数据,如GDPR(欧盟一般数据保护条例)。

总的来说,启用HTTPS可以提高网站的安全性、可信度,同时符合法规要求,因此在Docker中启用HTTPS是一个很好的实践。

二、https介绍

Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

三、https过程

  • 客户端发起HTTPS请求

用户在浏览器里输入一个 https 网址,然后连接到服务器的 443 端口

  • 服务端的配置 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥

  • 传送服务器的证书给客户端 证书里其实就是公钥,并且还包含了很多信息,如证书的颁发机构,过期时间等等

  • 客户端解析验证服务器证书 这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如:颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框提示证书存在问题。如果证书没有问题,那么就生成一个随机值,然后用证书中公钥对该随机值进行非对称加密

  • 客户端将加密信息传送服务器 这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加感解密了

  • 服务端解密信息 服务端将客户端发送过来的加密信息用服务器私钥解密后,得到了客户端传过来的随机值

  • 服务器加密信息并发送信息 服务器将数据利用随机值进行对称加密,再发送给客户端

  • 客户端接收并解密信息 客户端用之前生成的随机值解密服务段传过来的数据,于是获取了解密后的内容

四、安装docker-20.10.18

systemctl stop firewalld.service
setenforce 0#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 
-----------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
-----------------------------------------------------------------------------------------#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce-20.10.18 docker-ce-cli containerd.io  ##安装20版本systemctl start docker.service
systemctl enable docker.service
-----------------------------------------------------------------------------------------
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
-----------------------------------------------------------------------------------------docker version   #查看 docker 版本信息

五、如何获取证书

  • 在阿里云、华为云、腾讯云等云服务商那里申请一年有效期的免费证书或者购买证书

  • 在本地使用 openssl、mkcert、cfssl、certbot(Let's Encrypt)的工具生成本地私钥证书

通过阿里云获取证书

https://www.aliyun.com/product/cas?userCode=r3yteowb

六、docker部署nginx并且实现https

6.1准备证书

cd /opt
--------------------------------------
vim certificate.shCA_SUBJECT="/O=kgc/CN=ca.kgc.com"
SUBJECT="/C=CN/ST=js/L=nj/O=kgc/CN=www.kgc.com"
SERIAL=34
EXPIRE=202002
FILE=kgc.comopenssl req  -x509 -newkey rsa:2048 -subj $CA_SUBJECT -keyout ca.key -nodes -days 202002 -out ca.crtopenssl req -newkey rsa:2048 -nodes -keyout ${FILE}.key  -subj $SUBJECT -out ${FILE}.csropenssl x509 -req -in ${FILE}.csr  -CA ca.crt -CAkey ca.key -set_serial $SERIAL  -days $EXPIRE -out ${
FILE}.crtchmod 600 ${FILE}.key ca.key

bash certificate.sh #执行该脚本后执行后会生成ca.crt  ca.key  certificate.sh  kgc.com.crt  kgc.com.csr  kgc.com.key 这几个文件,需要对其进行处理   
#  kgc.com.crt(购买者)   ca.crt(b颁发者)   www.kgc.com.key(验证钥匙)cat kgc.com.crt ca.crt > www.kgc.com.crt
mv kgc.com.key www.kgc.com.key

#在/mnt下创建一个cert的文件夹,用于存放证书文件
[root@localhost opt]#hostnamectl set-hostname zzz
[root@localhost opt]#su
[root@zzz opt]#mkdir /mnt/cert
[root@zzz opt]#mv /opt/www.kgc.com.crt /opt/www.kgc.com.key /mnt/cert
[root@zzz opt]#
[root@zzz opt]#ll /mnt/cert
总用量 8
-rw-r--r-- 1 root root 2201 5月   4 13:59 www.kgc.com.crt
-rw------- 1 root root 1704 5月   4 13:56 www.kgc.com.key

6.2准备nginx.conf 和 index.html文件

[root@zzz opt]#cd /mnt
[root@zzz mnt]#ls
cert
[root@zzz mnt]#echo "hello nanjing" > index.html
[root@zzz mnt]#ls
cert  index.html
[root@zzz mnt]#cat index.html 
hello nanjing
[root@zzz mnt]#rz -E
rz waiting to receive.
[root@zzz mnt]#ls
cert  index.html  nginx(1).conf
[root@zzz mnt]#mv nginx\(1\).conf nginx.conf
[root@zzz mnt]#ls
cert  index.html  nginx.conf
[root@zzz mnt]#pwd
/mnt
[root@zzz mnt]#
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;events {worker_connections 1024;
}http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;include             /etc/nginx/mime.types;default_type        application/octet-stream;server {listen       80;listen 443 ssl;   ssl_certificate /mnt/www.kgc.com.crt;ssl_certificate_key /mnt/www.kgc.com.key;ssl_session_cache shared:sslcache:20m;ssl_session_timeout 10m;server_name www.kgc.com;root     /usr/share/nginx/html;error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}
}

6.3生成容器

​
[root@zzz mnt]#docker run -itd -p 8080:80 -p 8082:443 -v /mnt/nginx.conf:/etc/nginx/nginx.conf -v /mnt/index.html:/usr/share/nginx/html/index.html -v /mnt/cert/:/mnt/ --name nginx nginx:latest 
48944bdf4b31909ee2fc37c3acd16bf1fd4f804f6a00e9a011b9f8a5223657b5
[root@zzz mnt]#docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                                                            NAMES
48944bdf4b31   nginx:latest   "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8082->443/tcp, :::8082->443/tcp   nginx
[root@zzz mnt]#
[root@zzz mnt]#docker images
REPOSITORY                      TAG               IMAGE ID       CREATED       SIZE
nginx                           latest            605c77e624dd   2 years ago   141MB#生成容器,指定容器内80端口映射到本机的8080端口,指定容器内443端口映射到本机的8082端口  
#将/mnt/nginx.conf挂载到容器内/etc/nginx/nginx.conf下,
#将/mnt/index.html挂载到容器内的/usr/share/nginx/html/index.html,将容器内的index.html覆盖掉
#将/mnt/cert挂载到容器内的/mnt下,/mnt/cert下的所有文件都会出现在容器的/mnt下
#别名为  nginx  使用 nginx:latest 镜像生成并启动

6.4浏览器验证证书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch的基础用法简介

PyTorch是一个基于Python的开源机器学习库,它提供了灵活的神经网络构建和训练工具。下面是PyTorch的基础用法介绍: 张量(Tensors):PyTorch中的基本数据结构是张量,它类似于多维数组。可以通过torch.Tensor…

ssm120基于SSM框架的金鱼销售平台的开发和实现+jsp

金鱼销售平台 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于金鱼销售平台当然也不能排除在外,随着网络技术的不断成熟,带动了金鱼销售平台,它彻底改…

Oracle一键安装脚本安装教程合集

目前 Oracle 一键安装脚本已经更新到第四代,经作者测试以下版本均可成功安装! RedHat/Centos/OracleLinux 6.10 ✅ Oracle 11GR2(231017)单机Oracle 11GR2(231017)单机 ASMOracle 11GR2(23101…

栈与队列的实现

前言 本次博客将要实现一下栈和队列,好吧 他们两个既可以使用动态数组也可以使用链表来实现 本次会有详细的讲解 栈的实现 栈的基础知识 什么是栈呢? 栈的性质是后进先出 来画个图来理解 当然可不可以出一个进一个呢,当然可以了 比如…

【面试题】音视频流媒体高级开发(2)

面试题6 衡量图像重建好坏的标准有哪些?怎样计算? 参考答案 SNR(信噪比) PSNR10*log10((2n-1)2/MSE) (MSE是原图像与处理图像之间均方误差,所以计算PSNR需要2幅图像的数据!) SSIM…

Vue路由开启步骤

1.在控制台输入命令 //控制台下载安装npm add vue-router3.6.5 2.在main.js下导入并注册组件 import Vue from vue import App from ./App.vue//控制台下载安装npm add vue-router3.6.5 //导入 import VueRouter from "vue-router";//注册 Vue.use(VueRouter) con…

IntelliJ的Maven编译返回找不到有效证书

文章目录 小结问题及解决找不到有效证书找不到org.springframework.stereotype.Service问题IntelliJ: Cannot resolve symbol springframework 参考 小结 将IntelliJ工程拷贝到新的机器中,返回Maven编译返回找不到有效证书的问题,进行了解决。 问题及解…

实现stract(字符串拼接)函数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;char a[80], b[80];int i, n1, n2;//填充字符串&#xff1b;printf("请输入字符串a的内…

Python图形界面(GUI)Tkinter笔记(一):根窗口的创建

Tkinter库是Python的内置关于图形界面编程&#xff08;GUI全称为Graphical User Interface&#xff0c;中文意思为“图形用户界面”&#xff09;的一个库。直接导入Tkinter使用即可。 其余笔记&#xff1a;【Python图形界面&#xff08;GUI&#xff09;Tkinter笔记&#xff08;…

蓝桥杯-错误票据(两种写法stringstream和扣字符)

某涉密单位下发了某种票据&#xff0c;并要在年终全部收回。 每张票据有唯一的ID号。 全年所有票据的ID号是连续的&#xff0c;但ID的开始数码是随机选定的。 因为工作人员疏忽&#xff0c;在录入ID号的时候发生了一处错误&#xff0c;造成了某个ID断号&#xff0c;另外一个…

rt-thread 挂载romfs与ramfs

参考&#xff1a; https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/qemu-network/filesystems/filesystems?id%e4%bd%bf%e7%94%a8-romfs https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutor…

React 之 useCallback(缓存函数)(十八)

useCallback 是一个允许你在多次渲染中缓存函数的 React Hook。 useCallback 是一个 Hook&#xff0c;所以应该在 组件的顶层 或自定义 Hook 中调用。你不应在循环或者条件语句中调用它。如果你需要这样做&#xff0c;请新建一个组件&#xff0c;并将 state 移入其中。 //fn&am…

计算机毕业设计 | vue+springboot线上考试 在线测试系统(附源码)

1&#xff0c;项目介绍 项目背景 在线考试借助于网络来进行&#xff0c;传统考试所必备的考场和监考对于在线考试来说并不是必要项目&#xff0c;因此可以有效减少组织考试做需要的成本以及设施。同时&#xff0c;由于在线考试系统本身具有智能阅卷的功能&#xff0c;也大大减…

Sping @Autowired依赖注入原理

Spring 依赖注入发生在bean的实例化之后初始化之前的阶段&#xff0c;可以查看&#xff1a;bean的创建过程 Autowired Autowired由AutowiredAnnotationBeanPostProcessor实现依赖注入。 寻找注入点&#xff1a; AutowiredAnnotationBeanPostProcessor实现了MergedBeanDefin…

Python中的compile()函数,动态编译代码的艺术

关注公众号【一点sir】&#xff0c;领取编程资料。 简介 在Python编程中&#xff0c;compile()函数是一个强大的工具&#xff0c;它允许开发者将字符串形式的Python代码动态编译成字节码。这为执行动态生成或从外部源接收的代码提供了极大的灵活性。这些字节码随后可以被Pytho…

TensorFlow基于anaconda3快速构建

基于python构建太累 Installing Packages - Python Packaging User Guide 使用 pip 安装 TensorFlow 有兴趣自己学&#xff0c;我放弃了 -------------------------------------------------------- 下面基于anaconda 1、下载 Index of /anaconda/archive/ | 清华大学开…

电商核心技术揭秘56: 社群营销的未来趋势与挑战

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘相关系列文章合集&#xff08;3&#xff09; 电商技术揭秘四十一&#xff1a;电商平台的营销系统浅析 电商技术揭秘四十二&#…

Spring6 的JdbcTemplate的JDBC模板类的详细使用说明

1. Spring6 的JdbcTemplate的JDBC模板类的详细使用说明 文章目录 1. Spring6 的JdbcTemplate的JDBC模板类的详细使用说明每博一文案2. 环境准备3. 数据准备4. 开始4.1 从数据表中插入(添加)数据4.2 从数据表中修改数据4.3 从数据表中删除数据4.4 从数据表中查询一个对象4.5 从数…

Java8 ConcurrentHashMap 存储、扩容源码阅读

文章目录 1. 概述2. 入门实例3. 属性4. 核心方法4.1 put4.2 initTable4.3 transfer4.4 sizeCtl4.5 sizeCtl bug 1. 概述 ConcurrentHashMap 是线程安全且高效的 HashMap。 HashMap 可以看下我这篇 传送门 。 2. 入门实例 public class MyStudy {public static void main(St…

使用函数波动性优化 PostgreSQL 查询:Volatile, Stable, and Immutable

文章目录 1.overview2. Volatile函数3. Stable函数4. Immutable 函数结论 1.overview 在 PostgreSQL 中&#xff0c;函数的不同波动性选择——即 Volatile&#xff08;易变&#xff09;、Stable&#xff08;稳定&#xff09;和Immutable&#xff08;不可变&#xff09;——在查…