luler 一、简介 使用开源自签证书生成工具 mkcert 快速生成自签名 SSL 证书 使用Docker快速启动Nginx,并配置启用自签名 SSL 证书访问 mkcert 开源工具地址:https://github.com/FiloSottile/mkcert Docker快速启动Nginx工具代码参考:https://github.com/luler/nginx_ssl_fast Nginx 自签证书访问工作原理参考下图: 二、安装 1. 安装 mkcert 工具,并生成自签证书 安装方法一:直接下载可执行文件,下载地址:https://github.com/FiloSottile/mkcert/releases 安装方法二:大多数发行版Linux都可以直接安装,如ubuntu/Debian apt install mkcert -y 安装之后,可以一键生成自签证书,如下命令 //生成域名test.aimm.site的自签名SSL证书 mkcert test.aimm.site //生成ip 192.168.1.1 的自签名SSL证书 mkcert 192.168.1.1 2. Nginx配置使用自签名SSL证书 不限定域名ip,该服务会独占一个端口,可以通过ip+端口、域名+端口方式访问 server { listen 8443 ssl default_server reuseport; server_name _; # 匹配所有ip、域名请求 #设置证书 ssl_certificate /etc/nginx/conf.d/certs/justfortest.com.pem; ssl_certificate_key /etc/nginx/conf.d/certs/justfortest.com-key.pem; client_max_body_size 100M; # 设置为100MB # 这里可以反向代理到任何后端服务,如下示例代理到portainer服务 location / { proxy_pass http://host.docker.internal:9000; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 限定域名访问,一个端口服务于多个域名,根据域名反代到不同的后端服务 server { listen 9443 ssl default_server; server_name _; # 默认匹配所有ip、域名请求 # 为默认 server 块添加 SSL 证书配置 ssl_certificate /etc/nginx/conf.d/certs/justfortest.com.pem; ssl_certificate_key /etc/nginx/conf.d/certs/justfortest.com-key.pem; return 444; # 特殊状态码,会关闭连接而不发送响应头 } server { listen 9443 ssl; server_name portainer.aimm.site; # 如果需要指定域名访问,修改为你的域名 #设置证书 ssl_certificate /etc/nginx/conf.d/certs/justfortest.com.pem; ssl_certificate_key /etc/nginx/conf.d/certs/justfortest.com-key.pem; client_max_body_size 100M; # 设置为100MB location / { proxy_pass http://host.docker.internal:9000; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 3. Docker快速启动Nginx 新建docker-compose.yml配置文件,内容如下 services: nginx: image: nginx:latest network_mode: host volumes: - ./conf.d:/etc/nginx/conf.d restart: always 其中conf.d目录提前创建,配置格式如下 conf.d/ ├── certs //证书文件目录,可以使用mkcert工具生成,对应Nginx配置文件中的ssl证书配置 │ ├── justfortest.com-key.pem │ └── justfortest.com.pem └── default.conf //Nginx配置文件,可复制上面的Nginx配置示例 配置完毕,一键启动 docker-compose up -d 三、访问使用 自签证书网站都会被浏览器标识为不安全,莫慌张,正常的,点击继续即可 浏览器的不安全网站提示 点击继续即可进入Nginx反代的后端应用服务,如下示例是进入portainer服务 如果域名已经解析到服务器ip,也可以通过域名访问,如下示例 四、总结 mkcert工具生成自签名证书比openssl简单快捷多了,随时随地快速生成自定义SSL证书 给自己的网站加上自签名SSL证书,在一定程度上提高了网站的安全性,防止公共网络数据窃听、中间人工具等