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协议并且正确使用了证书。

相关推荐
杨浦老苏9 分钟前
开源客户关系管理平台EspoCRM
docker·crm·群晖
枫叶丹411 分钟前
【在Linux世界中追寻伟大的One Piece】Reactor反应堆模式
linux·运维·服务器
Littlehero_12136 分钟前
C语言中const char *字符进行切割实现
linux·c语言
誓约酱1 小时前
Linux系统常用指令
linux·运维·服务器·c++
EutoCool1 小时前
Linux:文件管理(一)
linux·运维·服务器
我们的五年1 小时前
【Linux课程学习】:命令行参数,环境变量
linux·c语言·学习
小狮子安度因1 小时前
Linux进程管理查找相关命令
linux·运维·服务器
爱跨境的笑笑1 小时前
跨境出海安全:如何防止PayPal账户被风控?
安全
LunarCod1 小时前
Linux驱动开发快速入门——字符设备驱动(直接操作寄存器&设备树版)
linux·驱动开发·设备树·嵌入式·c/c++·字符设备驱动
胡八一1 小时前
解决k8s拉取私有镜像401 Unauthorized 问题
云原生·容器·kubernetes