当前位置:   article > 正文

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

docker ssl访问

目录

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

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

步骤三:docker run启动容器并将其映射到443端口


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

  1. //生成ca证书
  2. 1)创建ca私钥
  3. openssl genrsa -aes256 -out ca-key.pem 4096 #输入123123
  4. ----------------------------------------------------------------------------------------------------------
  5. genrsa:使用RSA算法产生私钥
  6. -aes256:使用256位密钥的AES算法对私钥进行加密,这样每次使用私钥文件都将输入密码,可省略
  7. -out:输出文件的路径,若未指定输出文件,则为标准输出
  8. 4096:指定私钥长度,默认为1024。该项必须为命令行的最后一项参数
  9. ----------------------------------------------------------------------------------------------------------
  10. 2)创建ca证书
  11. openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem #输入123123
  12. ----------------------------------------------------------------------------------------------------------
  13. req:执行证书签发命令
  14. -new:新证书签发请求
  15. -x509:生成x509格式证书,专用于创建私有CA时使用
  16. -days:证书的有效时长,单位是天
  17. -key:指定私钥路径
  18. -sha256:证书摘要采用sha256算法
  19. -subj:证书相关的用户信息(subject的缩写)
  20. -out:输出文件的路径
  21. ----------------------------------------------------------------------------------------------------------
  22. //用 ca 证书签发 server 端证书
  23. 3)创建服务器私钥
  24. openssl genrsa -out server-key.pem 4096
  25. 4)生成证书签名请求文件(csr文件)
  26. openssl req -new -key server-key.pem -sha256 -subj "/CN=*" -out server.csr
  27. 5)使用ca 证书与私钥证书签发服务端签名证书,输入 123123,(需要签名请求文件,ca 证书,ca 密钥)
  28. openssl x509 -req -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -days 1000 -out server-cert.pem
  29. ----------------------------------------------------------------------------------------------------------
  30. x509:生成x509格式证书
  31. -req:输入csr文件
  32. -in:要输入的csr文件
  33. -CA:指定ca证书的路径
  34. -CAkey:指定ca证书的私钥路径
  35. -CAcreateserial:表示创建证书序列号文件,创建的序列号文件默认名称为ca.srl
  36. ----------------------------------------------------------------------------------------------------------

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

  1. [root@localhost nginx]#ls
  2. cert Dockerfile html nginx-1.24.0.tar.gz nginx.conf
  3. [root@localhost nginx]#ls cert/
  4. server-cert.pem server-key.pem
  5. [root@localhost nginx]#ls html/
  6. index.php test.html wordpress
  7. [root@localhost nginx]#cat html/test.html
  8. test
  9. [root@localhost nginx]#cat Dockerfile
  10. FROM centos:7 as build
  11. #基于centos7镜像
  12. MAINTAINER nginx on centos7 by lxy-20240125
  13. #注释信息
  14. ADD nginx-1.24.0.tar.gz /opt/
  15. #将nginx安装包传输到镜像中
  16. RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make openssl openssl-devel&& \
  17. cd /opt/nginx-1.24.0 && \
  18. ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module && \
  19. make && make install
  20. #下载编译安装nginx的依赖环境,以及创建nginx用户,进入nginx目录中,完成配置--编译--安装
  21. ENV PATH=$PATH:/usr/local/nginx/sbin/
  22. #创建镜像的环境变量
  23. COPY cert/ /usr/local/nginx/cert/
  24. ADD nginx.conf /usr/local/nginx/conf/nginx.conf
  25. #将配置文件传输的镜像中,覆盖原有的nginx.conf文件
  26. RUN chmod 777 -R /usr/local/nginx/html/
  27. #修改权限
  28. FROM centos:7
  29. #再次基于centos7
  30. COPY --from=build /usr/local/nginx /usr/local/nginx
  31. #把第一阶段的安装目录复制到第二阶段
  32. RUN useradd -M -s /sbin/nologin nginx
  33. #必须的有个nginx用户
  34. EXPOSE 443
  35. EXPOSE 80
  36. #暴露80端口
  37. CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
  38. #设置启动命令
  39. [root@localhost nginx]#vim nginx.conf
  40. [root@localhost nginx]#docker build -t nginx:https .

  1. server {
  2. listen 443 ssl;
  3. server_name www.benet.com;
  4. ssl_certificate /usr/local/nginx/cert/server-cert.pem;
  5. ssl_certificate_key /usr/local/nginx/cert/server-key.pem;
  6. ssl_session_timeout 5m;
  7. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  8. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  9. ssl_prefer_server_ciphers on;
  10. location ~ \.html$ {
  11. root html;
  12. index index.html index.htm;
  13. }
  14. }

 

 

步骤三:docker run启动容器并将其映射到443端口

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

测试页面

再来一个容器

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/227071
推荐阅读
相关标签
  

闽ICP备14008679号