【云原生】docker安全与https加密的超文本传输协议CA证书生成

目录

一、docker安全

二、http与https的区别

三、为什么要使用 SSL 证书?

四、https证书认证的过程

https单向认证的访问流程

https双向认证的访问流程

五、如何获取证书?

六、实操获取证书并验证

1、通过阿里云获取证书

2、通过mkcert获取证书

3、通过openssl获取证书


一、docker安全

docker容器使用安全注意点:
尽量别做的事:

  • 尽量不用 --privileged 运行容器(授权容器root用户拥有宿主机的root权限)
  • 尽量不用 --network host 运行容器(使用host网络模式共享宿主机的网络命名空间)
  • 尽量不在容器中运行 ssh 服务
  • 尽量不把宿主机系统的关键敏感目录挂载到容器中


尽量要做的事:

  • 尽量使用较小体积的镜像
  • 尽量以单一应用进程运行容器
  • 尽量在容器中使用最新稳定版本的应用
  • 尽量安装使用最新稳定版本的docker
  • 尽量以最低权限运行容器
  • 尽量使用官方提供的镜像或自己构建的镜像
  • 尽量给docker目录(默认/var/lib/docker/)分配独立的文件系统
  • 尽量以资源限制的方式运行容器 -m  --memory-swap  --cpu-quota   --cpu-shares --cpuset-cpus   --device-write-bps
  • 尽量以只读的方式挂载数据卷,持久化容器数据到宿主机的除外     -v 宿主机目录:容器数据卷目录:ro
  • 尽量设置容器的重启策略和次数   --restart always|on-failure:N
  • 尽量对镜像进行漏洞扫描

二、http与https的区别

HTTP与HTTPS的区别如下:

  1. 加密与安全性:HTTP是明文传输,数据在传输过程中容易被篡改和窃取;HTTPS通过SSL或TLS协议对数据进行加密传输,保证数据传输的安全性
  2. 数据完整性:HTTP没有提供数据完整性的保护机制,容易受到中间人攻击;HTTPS使用消息摘要算法来确保数据的完整性
  3. 身份验证:HTTP没有提供身份验证机制;HTTPS使用数字证书来验证服务器的身份
  4. 端口号HTTP使用的是80端口;HTTPS使用的是443端口

三、为什么要使用 SSL 证书?

HTTP协议无法加密数据,数据传输可能产生泄露、篡改或钓鱼攻击等问题,而启用HTTPS后,可帮助Web服务器和网站间建立可信的HTTPS协议加密链接,为网站安全加锁,保证数据安全传输。

四、https证书认证的过程

https单向认证的访问流程

 https的单向认证流程:
0)服务端会事先通过CA签发证书和私钥文件
1)客户端发送https请求到服务端的443端口
2)服务端会先返回一个包含公钥、证书有效期、CA机构等信息的证书给客户端
3)客户端受到服务端发来的证书后,会先用本地的CA证书校验服务端证书的有效性,如果证书有效,则继续,否则告警
4)客户端发送自己可支持的对称加密方案给服务端
5)服务端会选择加密程度最高的方案,并通过明文方式发送给客户端(与双向认证的核心区别)
6)客户端使用选择的加密方案生成随机会话密钥并通过证书中的公钥进行加密,再发送给服务端
7)服务端会用私钥进行解密获取客户端发来的随机会话密钥,并使用这个会话密钥加密要返回的报文,再发送给客户端
8)客户端也是这个会话密钥进行解密获取服务端返回的数据,之后双方可继续这个会话密钥进行加密和解密来实现密文通信

https双向认证的访问流程

https的双向认证流程:
0)服务端和客户端会事先通过CA签发服务端证书和私钥文件
1)客户端发送https请求到服务端的443端口
2)服务端会先返回一个包含公钥、证书有效期、CA机构等信息的证书给客户端
3)客户端收到服务端发来的证书后,会先用本地的CA证书校验服务端证书的有效性,如果证书有效,再将包含公钥的客户端证书发送给服务端
4)服务端收到客户端证书后也会校验证书的有效性,客户端还会发送自己可支持的对称加密方案给服务端
5)服务端会选择加密程度最高的方案,并通过客户端证书里的公钥加密后发送给客户端
6)客户端使用私钥解密获取选择的加密方案,并使用此加密方案生成随机会话密钥,再通过服务端证书中的公钥进行加密,再发送给服务端
7)服务端会用私钥进行解密获取客户端发来的随机会话密钥,并使用这个会话密钥加密要返回的报文,再发送给客户端
8)客户端也是这个会话密钥进行解密获取服务端返回的数据,之后双方可继续这个会话密钥进行加密和解密来实现密文通信

五、如何获取证书?

1)在阿里云、华为云、腾讯云等云服务商那里申请一年有效期的免费证书或者购买证书
2)在本地使用 openssl、mkcert、cfssl、certbot(Let's Encrypt)的工具生成本地私钥证书

六、实操获取证书并验证

1、通过阿里云获取证书

https://www.aliyun.com/product/cas?userCode=r3yteowb
##阿里云购买数字证书

2、通过mkcert获取证书

[root@localhost ~]#mkdir mkcert_list
[root@localhost ~]#cd mkcert_list/
[root@localhost ~/mkcert_list]#mkcert www.xueyin.com[root@localhost ~/mkcert_list]#ls
www.xueyin.com-key.pem  www.xueyin.com.pem

 

    server {listen       443 ssl; #SSL访问端口号为 443server_name  www.xueyin.com; #指定绑定证书的域名root         /usr/share/nginx/html;ssl_certificate /root/mkcert_list/www.xueyin.com.pem; #指定服务端证书文件路径ssl_certificate_key /root/mkcert_list/www.xueyin.com-key.pem; #指定服务端私钥文件路径ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL服务器端支持的协议版本ssl_prefer_server_ciphers  on;
...
}

 

3、通过openssl获取证书

//用 ca 证书签发 server 端证书
创建服务器私钥
openssl genrsa -out server-key.pem 4096生成证书签名请求文件(csr文件)
openssl req -new -key server-key.pem -sha256 -subj "/CN=*" -out server.csr创建ca私钥
openssl genrsa -out ca-key.pem 4096		
----------------------------------------------------------------------------------------------------------
genrsa:使用RSA算法产生私钥
-aes256:使用256位密钥的AES算法对私钥进行加密,这样每次使用私钥文件都将输入密码,可省略
-out:输出文件的路径,若未指定输出文件,则为标准输出
4096:指定私钥长度,默认为1024。该项必须为命令行的最后一项参数
----------------------------------------------------------------------------------------------------------

创建ca证书
openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem			#输入123123
----------------------------------------------------------------------------------------------------------
req:执行证书签发命令
-new:新证书签发请求
-x509:生成x509格式证书,专用于创建私有CA时使用
-days:证书的有效时长,单位是天
-key:指定私钥路径
-sha256:证书摘要采用sha256算法
-subj:证书相关的用户信息(subject的缩写)
-out:输出文件的路径
----------------------------------------------------------------------------------------------------------使用ca 证书与私钥证书签发服务端签名证书,输入 123123,(需要签名请求文件,ca 证书,ca 密钥)
openssl x509 -req -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -days 1000 -out server-cert.pem
----------------------------------------------------------------------------------------------------------
x509:生成x509格式证书
-req:输入csr文件
-in:要输入的csr文件
-CA:指定ca证书的路径
-CAkey:指定ca证书的私钥路径
-CAcreateserial:表示创建证书序列号文件,创建的序列号文件默认名称为ca.srl
----------------------------------------------------------------------------------------------------------

准备nginx的测试文件

    server {listen       443 ssl;server_name  www.benet.com;ssl_certificate /root/openssl/server-cert.pem;ssl_certificate_key /root/openssl/server-key.pem;ssl_session_timeout  5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location ~ \.html$ {root   html;index  index.html index.htm;}}

 

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

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

相关文章

09. BI - 数据可视化,如何进行基本图形绘制

本文为 「茶桁的 AI 秘籍 - BI 篇 第 09 篇」 文章目录 EDA 作用可视化视图Python 进行可视化subplot Hi,你好。我是茶桁。 今天想给大家讲的是关于数据的可视化。在工作中很多时候我们不光要计算结果,还要把结果呈现出来,最好是一种图形化的…

uniapp基于Android平台的校园生活服务交流论坛系统(二手,失物招领 -跑腿) 小程序hbuiderx

作为一款APP的校园论坛系统,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多功能&#x…

「数据结构」1.初识泛型

🎇个人主页:Ice_Sugar_7 🎇所属专栏:Java数据结构 🎇欢迎点赞收藏加关注哦! 初识泛型 🍉前言🍉包装类🍌装箱&拆箱 🍉泛型🍌擦除机制&#x1f…

python实现贪吃蛇小游戏(附源码)

文章目录 导入所需的模块坐标主游戏循环模块得分 贪吃蛇小游戏,那个曾经陪伴着00后和90后度过无数欢笑时光的熟悉身影,仿佛是一把打开时光之门的钥匙。它不仅是游戏世界的经典之一,更是我们童年岁月中不可或缺的一部分,一个承载回…

C语言第十四弹---函数递归

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 函数递归 1、递归是什么? 1.1、递归的思想 1.2、递归的限制条件 2、递归举例 2.1、举例1:求n的阶乘 2.1.1、分析和代码实现 2.1.2、…

【云上建站】快速在云上构建个人网站3——网站选型和搭建

快速在云上构建个人网站3——网站选型和搭建 一、网站选型二、云市场镜像方式一:方式二:1. 进入ECS实例详情页面,点击停止,确保更换操作系统的之前ECS实例处于已停止状态,点击更换操作系统,进行镜像配置。2…

正则表达式 与文本三剑客(sed grep awk)

一,正则表达式 (一)正则表达式相关定义 1,正则表达式含义 REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意…

能耗在线监测系统在节能管理中的应用

上海安科瑞电气股份有限公司 胡冠楠 咨询家:“Acrelhgn”,了解更多产品资讯 摘要:开展能耗在线监测系统建设,对加强政府部门和企业节能管理中的应用前景,分析系统在能源消费预测分析、能效对标、节能监察、能源精细化…

ChatGPT可与自定义GPTs一起使用,智能AI代理时代来啦!

1月31日凌晨,OpenAI在社交平台公布了一个超强新功能,可以在ChatGPT中输入“GPTs名字”的方法,调用多个自定义GPTs一起协同工作。 例如,我想开发一款社交APP,1)可以先用专业分析GPTs做一下市场调研&#xf…

opencvb 十七 使用cmake配置opencv c++项目

1、cmake简介 1.1 cmake是什么 CMake是一个开源、跨平台的编译(Build)工具,是用来构建、测试和打包软件的。它能够用简单的语句来描述所有平台的编译过程。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C特…

云打印机怎么连接手机?

现在越来越多的人使用手机来办公或学习。而当我们需要打印文件时,如何用云打印机连接手机就非常重要了。易绘创云打印服务非常实用,那么易绘创云打印机又该怎么连接手机?下面就让我们一起来了解吧。 云打印机怎么连接手机? 当下云打印机连接…

opencv#40 图像细化

图像细化原理 作用:图像细化是将图像的线条从多像素宽度减少到单位像素宽度的过程,又被称为“骨架化”,删除像素点的标准: 通常情况下,我们使用二值化图像,我们在判断是否要删除某些像素点时,要…