首页 > 其他分享 >Docker 搭建本地 https 环境

Docker 搭建本地 https 环境

时间:2023-08-28 14:12:08浏览次数:34  
标签:certificate pem nginx html usr https Docker local 搭建

目录

环境:

安装 Docker

安装 docker-compose

1. 生成自签名的SSL证书和私钥

首先,生成自签名的 SSL 证书和私钥。可以使用 OpenSSL 命令来生成

hostnamectl set-hostname httpshost
su
echo "192.168.23.5 www.httpshost.com" >> /etc/hosts

mkdir /opt/nginx
cd /opt/nginx
# 上传 nginx-1.22.0.tar.gz 安装包
rz -E

# 生成本地SSL证书及密钥文件
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem

这个命令将会生成一个私钥文件 key.pem 和一个证书文件 certificate.pem

解释一下命令的参数:

  • req:执行证书请求相关操作。
  • -newkey rsa:2048:生成一个新的 RSA 密钥对,密钥长度为 2048 bits。
  • -nodes:私钥不进行加密,这样在使用证书时不需要输入密码。
  • -keyout key.pem:指定生成的私钥文件名为 key.pem
  • -x509:生成自签名的证书。
  • -days 365:证书有效期为 365 天。
  • -out certificate.pem:指定生成的证书文件名为 certificate.pem

image-20230828132226687

2. 编辑 Nginx 的 Dockerfile 文件

vim /opt/nginx/Dockerfile

# 基于基础镜像
FROM centos:7

# 维护者信息
MAINTAINER this is nginx image <mz>

# 添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make openssl openssl-devel

# 创建nginx管理用户
RUN useradd -M -s /sbin/nologin nginx

# 上传 nginx 软件压缩包,并解压
ADD nginx-1.22.0.tar.gz /usr/local/src/

# 指定工作目录
WORKDIR /usr/local/src/nginx-1.22.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

# 编译及安装
RUN make && make install

# 环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

# 指定 http 和 https 端口
#EXPOSE 80
EXPOSE 443

# 容器运行时执行命令
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]


image-20230828133011740

3. 编辑 YAML 文件

编辑 docker-compose.yml 文件:

vim /opt/nginx/docker-compose.yml

# 指定docker-compose版本为3
version: '3'

services:
  # 定义一个名为 nginx 的服务
  nginx:
    # 设置容器名称为 nginx
    container_name: nginx
    # 设置主机名为 nginx
    hostname: nginx
    # 构建镜像
    build:
      # 设置上下文路径为 ./nginx,及Dockerfile所在目录
      context: ./
      # 指定 Dockerfile 文件名为 Dockerfile
      dockerfile: Dockerfile
    # 端口映射
    ports:
      # 将主机的 80 端口映射到容器的 80 端口
      #- 80:80
      # 将主机的 443 端口映射到容器的 443 端口
      - 443:443
    # 网络设置
    networks:
      # 连接到名为 mynet 的网络
      mynet:
        # 指定容器的ip地址为 172.18.0.10
        ipv4_address: 172.18.0.10
    # 卷挂载
    volumes:
      # 将主机的 ./html 目录挂载到容器的 /usr/local/nginx/html 的目录
      - ./nginx.conf:/usr/local/nginx/conf/nginx.conf
      - ./html:/usr/local/nginx/html
      - ./key.pem:/usr/local/nginx/ssl/key.pem
      - ./certificate.pem:/usr/local/nginx/ssl/certificate.pem


# 网络定义
networks:
  # 定义名为 mynet 的网络
  mynet:
    # 使用 bridge 网络驱动
    driver: bridge
    # IP 地址管理
    ipam:
      # 配置 IP 地址
      config:
        # 设置子网为 172.18.0.0/16
        - subnet: 172.18.0.0/16


image-20230828133209059

4. 准备 nginx 主配置文件

在与 docker-compose.yml 文件相同的目录中创建一个名为 nginx.conf 的配置文件,并添加以下内容:

vim nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       443 ssl;
        ssl_certificate /usr/local/nginx/ssl/certificate.pem;
        ssl_certificate_key /usr/local/nginx/ssl/key.pem;

        server_name  httpshost;
        charset utf-8;
        location / {
            root   html;
            index  index.html index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

image-20230828133340832

5. 运行以下命令启动容器

docker-compose -f docker-compose.yml up -d

image-20230828133743355

image-20230828134455411

6. 添加网页主页

echo "this is https test" > html/index.html

image-20230828135438806

7. 测试

现在,您的本地 Docker 环境已经搭建好了 HTTPS。您可以通过访问 https://www.httpshost.com 来测试您的应用程序。请注意,由于使用的是自签名证书,您可能会收到浏览器的安全警告。

image-20230828135545704

image-20230828135620026

image-20230828135706377

标签:certificate,pem,nginx,html,usr,https,Docker,local,搭建
From: https://www.cnblogs.com/m-zhuang/p/17662135.html

相关文章

  • 让用户访问Tomcat时强制跳转到Https方式
    让用户访问Tomcat时强制跳转到Https方式。首先配置Tomcat可以在Https下运行,相应的配置,请查看其它说明文档。http://www.iteye.com/topic/78274修改tomcat/conf/web.xml文件,在</welcome-file-list>下面加上如下语句<login-config><!--Authorizatio......
  • Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转
    场景开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130136245上面讲了ZLMediaKit的使用流程。下面介绍另一种开源流媒体服务器。Monibucahttps://m7s.......
  • docker 启动redis 启动配置文件可以去网上查找一篇
    dockerrun--privileged=true-d--nameredis-p6379:6379-v/Users/zs/docker/redis/conf/redis.conf:/etc/redis/redis.conf-v/Users/zs/docker/redis/data:/dataredisredis-server/etc/redis/redis.conf   configurl参考如下 https://blog.csdn.net/xuyan......
  • k8s搭建遇到的问题
    1.端口不能使用例如66662.docker没有restart导致网络没生效3.calico因为网卡导致routeip出错  pod直接访问内部17.XXX网卡的ip,而且ip不断变化和新增的pod不好管理->使用service例如label来管理相同的pod,可以使用customIP类型但是外部访问不了->使用service的nodePo......
  • 使用阿里云ECS和RDS搭建个人博客
    一、ECS实例配置1、重置云服务器ECS密码前往ECS控制台,点击实例,找到刚才开通的ECS实例(找不到的话就看一下上方的地区是否是你的服务器的地域),点击右侧操作栏中的三个点,找到重置实例密码,点击打开。在弹出的【重置密码】的对话框中,输入新的自定义密码,完成密码重置。重置密码后,必......
  • Docker搭建本地私有仓库
    一、拉取Registry镜像dockerpullregistry二、运行registry容器dockerrun-d-p5000:5000-v/langren/myreqistry:/tmp/reqistry--privileged=true--namemyreqistryregistry三、发送get请求验证镜像库是否正常运行curl-XGEThttp://10.10.10.12:5000/v2/_catalog四、配置......
  • 网络直播源码UDP协议搭建:为平台注入一份力量
    网络直播源码中的UDP协议的定义:UDP协议又名用户数据报协议,是一种轻量级、无连接的协议。在网络直播源码平台中,UDP协议有着高速传输与实时性的能力,尤其是在网络直播源码实时性要求较高的场景,UDP协议的应用有着重要的意义。UDP协议在网络直播源码的好处:1. 高速实时传输:UDP协议是一种......
  • 网络直播源码UDP协议搭建:为平台注入一份力量
    网络直播源码中的UDP协议的定义:UDP协议又名用户数据报协议,是一种轻量级、无连接的协议。在网络直播源码平台中,UDP协议有着高速传输与实时性的能力,尤其是在网络直播源码实时性要求较高的场景,UDP协议的应用有着重要的意义。 UDP协议在网络直播源码的好处:高速实时传输:UDP协议......
  • docker命令行
     dockerimages 查看所有镜像dockerrmicycbg0s16r/simulationbbsweb:v1.7.1  删除镜像{REPOSITORY :tag}systemctlstatusdocker   查看docker运行状态(显示绿色代表正常启动) dockerps:查看当前正在运行的容器。dockerstart<容器名或ID>:启动一个已经停止......
  • 如何把Https网站中的安全证书导入到java中的cacerts证书库中?
     如何把Https网站中的安全证书导入到java中的cacerts证书库中?在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢?其实很简单,方法如下:每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来,在该网页上右键>>属性......