Docker 安全 Docker HTTPS请求过程与配置

Docker 容器安全注意点

尽量别做的事

尽量不用 --privileged 运行容器(授权容器root用户拥有宿主机的root权限)

尽量不用 --network host 运行容器(使用 host 网络模式共享宿主机的网络命名空间)

尽量不在容器中运行 ssh 服务

尽量要做的事

尽量使用最小化的镜像

尽量以单一进程运行容器

尽量使用最新版本的应用做镜像主进程

尽量使用最新版本的docker

尽量以最低权限运行容器

尽量下载使用官方的镜像或自己构建镜像从私有仓库下载镜像

尽量使用只读的方式挂载数据卷 -v 宿主机目录:容器目录:ro

尽量设置容器重启次数 --restart on-failure:N

尽量以资源限制的方式运行容器 -m --cpu-quota --device-write-bps




HTTPS请求过程与证书获取

http 超文本传输协议 tcp/80 明文传输

https 安全的超文本传输协议 tcp/443 密文传输 证书加密

HTTPS请求访问过程【重中之重重中之重】

0)服务端会事先通过 CA 签发证书和私钥

1)客户端发送 https 请求到服务端的 443 端口

2)服务端发送包含公钥、证书有效期及 CA 机构等信息的证书给客户端

3)客户端会先通过 CA 验证证书的有效性

4)若证书有效,客户端会在本地随机生成会话密码并通过服务端发来的公钥加密后返回给服务端

5)服务器用私钥解密获取会话密钥,之后双方即可使用会话密钥加密/解密来实现密文通信

如何获取 ssl 证书?【重要】

云服务商免费申请 或是本地openssl等生成

  1. 在 阿里云、腾讯云、华为云 等云服务商 申请一年前的免费证书
    1. 免费申请SSL证书及部署就是这么简单
    2. 阿里云服务器Nginx配置SSL证书,实现HTTPS访问
  2. 在服务器本地使用 openssl、mkcert、cfssl、certbot(Let's Encrypt)等工具 生成 SSL 证书
    1. 一文搞定SSL证书的所有创建问题
    2. 如何免费申请 SSL 证书

ssl/tls 加密 通常代表 证书认证加密

服务器本地 openssl 创建证书

ca 证书和私钥 -> 服务器/客户端证书 和 私钥

复制代码
yum install -y openssl

1)创建 CA 私钥和证书

bash 复制代码
openssl genrsa -out ca.key 2048                             #生成 ca 私钥 私钥长度2048、4096 只要是1024倍数
#genrsa:使用RSA算法产生私钥
#-aes256:使用256位密钥的AES算法对私钥进行加密,这样每次使用私钥文件都将输入密码,可省略
#-out:输出文件的路径,若未指定输出文件,则为标准输出
#4096:指定私钥长度,默认为1024。该项必须为命令行的最后一项参数

openssl req -new -key ca.key -out ca.csr                    #生成 ca 证书自签名请求文件

openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.pem    #生成 ca 证书
#req:执行证书签发命令
#-new:新证书签发请求
#-x509:生成x509格式证书,专用于创建私有CA时使用
#-days:证书的有效时长,单位是天
#-key:指定私钥路径
#-sha256:证书摘要采用sha256算法
#-subj:证书相关的用户信息(subject的缩写)
#-out:输出文件的路径

2)创建服务端自签名请求文件

复制代码
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr

3)使用CA签发服务端证书(需要签名请求文件,ca 证书,ca 密钥)

bash 复制代码
openssl x509 -req -days 3650 -in server.csr -signkey ca.key -out server.pem

x509:生成x509格式证书
-req:输入csr文件
-in:要输入的csr文件
-CA:指定ca证书的路径
-CAkey:指定ca证书的私钥路径
-CAcreateserial:表示创建证书序列号文件,创建的序列号文件默认名称为ca.srl

完成CA证书 server证书创建后,客户端就可以进行认证【双向认证还需要按照server证书生成方式再生成client证书传送给client端,并且将ca.pam(ca证书)一并传送给客户端,客户端据此判断server.pam的有效性。】

另外对于不同的服务,还需要按照官方文档说明修改相应的配置,使其能够使用https协议并且正确使用了证书。

相关推荐
Johny_Zhao1 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
用户962377954486 小时前
DVWA 靶场实验报告 (High Level)
安全
NineData7 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
数据智能老司机10 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机10 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户9623779544811 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star11 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544815 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
fetasty15 小时前
rustfs加picgo图床搭建
docker
小时前端15 小时前
HTTPS 页面加载 HTTP 脚本被拦?同源代理来救场
前端·https