【云原生】docker容器实现https访问

news/2024/7/4 7:48:49 标签: 云原生, docker, https, 容器, 运维, 分布式

目录

步骤一:在宿主机生成服务端的公钥证书和私钥文件

步骤二:准备Dockerfile文件构建镜像

docker%20run%E5%90%AF%E5%8A%A8%E5%AE%B9%E5%99%A8%E5%B9%B6%E5%B0%86%E5%85%B6%E6%98%A0%E5%B0%84%E5%88%B0443%E7%AB%AF%E5%8F%A3-toc" style="margin-left:0px;">步骤三:docker run启动容器并将其映射到443端口


步骤一:在宿主机生成服务端的公钥证书和私钥文件

//生成ca证书
(1)创建ca私钥
openssl genrsa -aes256 -out ca-key.pem 4096			#输入123123
----------------------------------------------------------------------------------------------------------
genrsa:使用RSA算法产生私钥
-aes256:使用256位密钥的AES算法对私钥进行加密,这样每次使用私钥文件都将输入密码,可省略
-out:输出文件的路径,若未指定输出文件,则为标准输出
4096:指定私钥长度,默认为1024。该项必须为命令行的最后一项参数
----------------------------------------------------------------------------------------------------------

(2)创建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 证书签发 server 端证书
(3)创建服务器私钥
openssl genrsa -out server-key.pem 4096

(4)生成证书签名请求文件(csr文件)
openssl req -new -key server-key.pem -sha256 -subj "/CN=*" -out server.csr

(5)使用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
----------------------------------------------------------------------------------------------------------

https://img-blog.csdnimg.cn/direct/bb25c37ae74d4d0bb3cf177364511d76.png" width="1200" />

步骤二:准备Dockerfile文件构建镜像

[root@localhost nginx]#ls
cert  Dockerfile  html  nginx-1.24.0.tar.gz  nginx.conf
[root@localhost nginx]#ls cert/
server-cert.pem  server-key.pem
[root@localhost nginx]#ls html/
index.php  test.html  wordpress
[root@localhost nginx]#cat html/test.html 
test
[root@localhost nginx]#cat Dockerfile 
FROM centos:7 as build
#基于centos7镜像
MAINTAINER nginx on centos7 by lxy-20240125
#注释信息
ADD nginx-1.24.0.tar.gz /opt/
#将nginx安装包传输到镜像中
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make openssl openssl-devel&& \
    cd /opt/nginx-1.24.0 && \
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module && \
    make && make install
#下载编译安装nginx的依赖环境,以及创建nginx用户,进入nginx目录中,完成配置--编译--安装
ENV PATH=$PATH:/usr/local/nginx/sbin/
#创建镜像的环境变量
COPY cert/ /usr/local/nginx/cert/
ADD nginx.conf /usr/local/nginx/conf/nginx.conf
#将配置文件传输的镜像中,覆盖原有的nginx.conf文件
RUN chmod 777 -R /usr/local/nginx/html/
#修改权限

FROM centos:7
#再次基于centos7
COPY --from=build /usr/local/nginx /usr/local/nginx
#把第一阶段的安装目录复制到第二阶段
RUN useradd -M -s /sbin/nologin nginx
#必须的有个nginx用户
EXPOSE 443
EXPOSE 80
#暴露80端口
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
#设置启动命令
[root@localhost nginx]#vim nginx.conf 
[root@localhost nginx]#docker build -t nginx:https .

https://img-blog.csdnimg.cn/direct/c1bc6d3e48204a6ebc48f3036b9877a2.png" width="1200" />

        server {
        listen       443 ssl;
        server_name  www.benet.com;
        ssl_certificate /usr/local/nginx/cert/server-cert.pem;
        ssl_certificate_key /usr/local/nginx/cert/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;
        }
    }

https://img-blog.csdnimg.cn/direct/169f3672f9004a6cbea1a177a822bcc1.png" width="1200" /> 

https://img-blog.csdnimg.cn/direct/2075abe129a6465a9f302cdd47db0b79.png" width="1200" /> 

docker%20run%E5%90%AF%E5%8A%A8%E5%AE%B9%E5%99%A8%E5%B9%B6%E5%B0%86%E5%85%B6%E6%98%A0%E5%B0%84%E5%88%B0443%E7%AB%AF%E5%8F%A3">步骤三:docker run启动容器并将其映射到443端口

[root@localhost nginx]#docker run -id --name n1 -v /docker/nginx/html/:/usr/local/nginx/html/ -p 443:443 nginx:https 
##将443端口映射到宿主机的443端口
[root@localhost nginx]#docker ps -a

https://img-blog.csdnimg.cn/direct/d7133ad812084a1dae58c5bc1cf6757a.png" width="1200" />

测试页面

https://img-blog.csdnimg.cn/direct/fb796cf05ac34fb5b767a0072289ba97.png" width="840" />

再来一个容器

https://img-blog.csdnimg.cn/direct/e57e2538fed94aed8661ea5e8ba47d23.png" width="1200" />

https://img-blog.csdnimg.cn/direct/d5b07f4d76b54401b3f19c0023650d90.png" width="976" /> https://img-blog.csdnimg.cn/direct/c9054f2ad51d469190c4d550ea2e459b.png" width="1200" />


http://www.niftyadmin.cn/n/5358156.html

相关文章

dockerpipwork相关测试过程

pipework可以减轻docker实施过程中的工作量,在网上也找了几篇类似的文章,按照相应配置,结果并不相同 如下测试过程记录下: docker run -it --rm --name c1 busybox docker run -it --rm --name c2 busyboxpipework br1 c1 192…

基于muduo网络库开发服务器程序 笔记

跟着施磊老师做C项目,施磊老师_腾讯课堂 (qq.com) 一、基于muduo网络库开发服务器程序 组合TcpServer对象创建EventLoop事件循环对象的指针明确TcpServer构造函数需要什么参数,输出ChatServer的构造函数在当前服务器类的构造函数当中,注册处理连接的回调函数和处理…

免费使用支持离线部署使用的 txt2video 文本生成视频大模型(Text-to-Video-Synthesis Model)

免费使用支持离线部署使用的 txt2video 文本生成视频大模型(Text-to-Video-Synthesis Model)。 文本生成视频大模型(Text-to-Video-Synthesis Model)是一种基于深度学习技术的人工智能模型,它可以将自然语言文本描述转换为相应的视频。即通过输入文本描述&#xff…

Nginx 本地部署vue项目

1、 下载 Nginx 稳定版本 2、下载安装后,打开 nginx.conf配置文件 3、找到打包好的文件,并配置运行文件 文件的位置 root C:/server/build location /{root C:/server/build;index index.html index.htm;#解决刷新后nginx报404问题try_files $uri …

我的数据结构c(给自己用的)

目录 顺序表: 链表: 栈: 队列: 我想在之后的大学数据结构课上需要自己写来做题,但每次都自己写,那太麻烦了,所以我就将这个博客来把所有的C语言的数据结构弄上去, 问我为什么不…

web前端之若依vue3不能及时获取字典值的解决方案、二次封装若依自带的获取字典方法、watchEffect、watch

MENU 前言watch和watchEffect的区别解决若依vue3不能及时获取字典值 前言 因为请求字典的过程是异步 所以没能及时获取到字典数据 watch和watchEffect的区别 基本使用 const { a_type, b_type } proxy.useDict("a_type", "b_type");watch(() > a_type…

pdf怎么转成高清图?pdf在线转换器推荐分享

在日常的工作或者学习中,有时候会需要将编辑好的pdf转高清图片,这样更方便我们后续使用,那么怎么将pdf转图片(https://www.yasuotu.com/pdftopic)还能保持清晰呢?下面介绍一款pdf转换工具,支持p…

RK3288将某个文件移到系统下的某个位置

比如将PHY_REG_PG.txt移到system/etc/firmware/下 将文件放到external/wlan_loader/firmware下 配置external/wlan_loader/wifi-firmware.mk PRODUCT_COPY_FILES \external/wlan_loader/iwconfig:system/bin/iwconfig \external/wlan_loader/iwlist:system/bin/iwlist \WifiF…