使用docker搭建自签名https服务器

mac2025-05-04  12

实验简述

使用docker的centos镜像,在里面安装nginx,然后拿自生成的签名,配置nginx证书,最后通过https访问服务器

docker版本:Docker version 18.09.2, build 6247962 centos 镜像: docker search 里面检索出来拿最新的就可以了 nginx版本:nginx-1.15.9 pcre版本:pcre-8.42 ssl证书:自签名获取

自签名SSL证书

# 1.生成私钥 $ openssl genrsa -out server.key 2048 # 2.生成 CSR (Certificate Signing Request) $ openssl req -subj "/C=CN/ST=Tianjin/L=Tianjin/O=Mocha/OU=Mocha Software/CN=test1.sslpoc.com/emailAddress=test@mochasoft.com.cn" -new -key server.key -out server.csr # 3.生成自签名证书 $ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

参考博文:如何创建自签名SSL证书

启动centos镜像

# 1、查找centos镜像 docker search centos # 2、拉取centos镜像 docker pull centos:latest # 3、启动镜像,并暴露80和443端口 docker run -d -t -p80:80 -p443:443 centos # 4、进入容器 docker exec -it <CONTAINER ID> bash

启动效果:

安装基础软件

# 1、安装ssl模块 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel # 2、安装wget yum -y install wget

安装pcre

#下载最新版本的,注意不要用pcre2 wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz tar -xvf pcre-8.42.tar.gz cd pcre-8.42 #安装编译 ./configure make && make install #查看pcre版本 pcre-config --version

安装nginx

#下载 wget https://nginx.org/download/nginx-1.15.9.tar.gz tar -xvf nginx-1.15.9.tar.gz cd nginx-1.15.9 #编译安装 ./configure --prefix=/usr/local/nginx-1.15.9 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.42 make && make install #查看版本 /usr/local/nginx/sbin/nginx -v

启动nginx

# 1、创建目录和日志文件 mkdir /usr/local/nginx-1.15.9/logs/ touch error.log touch access.log # 2、启动nginx /usr/local/nginx-1.15.9/sbin/nginx -c /usr/local/nginx-1.15.9/conf/nginx.conf # 3、测试启动结果 curl http://localhost

配置ssl证书到nginx

将第一步骤证书文件cp到docker容器里面

docker cp server.crt <CONTAINER ID>:/usr/local/nginx-1.15.9/conf/ docker cp server.key <CONTAINER ID>:/usr/local/nginx-1.15.9/conf/

修改nginx.conf,往http的对象里添加证书配置,cd如下

server { listen 443 ssl; server_name localhost; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }

参考:Nginx配置SSL证书

重新启动nginx,显示,说明https已经配置成功

# 删除sbin下面的nginx rm -rf ./sbin/nginx #将obj下面的nginx复制到shin cp ./objs/nginx ./sbin/

启动 nginx -c nginx.conf 重启nginx -s reload

参考文章:centos7下安装nginx

最新回复(0)