nginx使用openSSL自签生成https相关证书

生成CA私钥

openssl genrsa -out ca.key 2048

生成 CA 根证书 (自签名)

openssl req -new -x509 -days 36500 -key ca.key -out ca.crt -subj "/C=CN/ST=State/L=City/O=Organization/OU=Unit/CN=Root CA"

生成服务端私钥(给 Nginx 用)

openssl genrsa -out server.key 2048

生成服务端证书签名请求,下面ip需修改为域名或部署机器的ip

openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=State/L=City/O=Organization/OU=Unit/CN=192.168.2.129"

使用CA签发服务端证书,可修改签发有效期

openssl x509 -req -days 36500 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

生成客户端私钥(给浏览器或其它接入程序使用)

openssl genrsa -out client.key 2048

生成客户端证书签名请求,下面的client_name需修改为接入端身份标识

openssl req -new -key client.key -out client.csr -subj "/C=CN/ST=State/L=City/O=Organization/OU=Unit/CN=client_name"

使用CA签发客户端证书,可修改签发有效期

openssl x509 -req -days 36500 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt

打包客户端证书为PKCS12格式(给浏览器或其他接入程序使用)

openssl pkcs12 -export -out client.p12 -inkey client.key -in client.crt -certfile ca.crt

nginx.conf配置

复制代码
events {
    worker_connections 1024;
}

http {
   upstream gateway {
       server 192.168.1.111:8080 weight=1 max_fails=1 fail_timeout=30s;
    }

    server {
       listen 443 ssl;

	   ssl_certificate /usr/local/nginx/nginx_cert/server.crt;
       ssl_certificate_key /usr/local/nginx/nginx_cert/server.key;
	   ssl_client_certificate /usr/local/nginx/nginx_cert/ca.crt;
	   
	   # 开启客户端验证 (on 代表客户端服务端双端验证)
	   #ssl_verify_client on; 
	   
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers HIGH:!aNULL:!MD5:!RC4;

       location / {
          proxy_redirect off;
          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_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection 'upgrade';
          proxy_pass http://gateway;
       }
    }
}
相关推荐
Re_Virtual4 小时前
centos 7环境下构建nginx 1.30
nginx·centos·rpmbuild
小辰记事本5 小时前
从零读懂RoCEv2数据包构造:从WQE到线缆上的完整旅程
服务器·网络·网络协议·rdma
江公望8 小时前
Ubuntu htop命令,10分钟讲清楚
linux·服务器
哎呦,帅小伙哦8 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
张小姐的猫8 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
YuanDaima20489 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能
lolo大魔王11 小时前
Linux 数据文件处理实战:排序、搜索、压缩、归档一站式详解
linux·运维·服务器
1892280486111 小时前
NY382固态MT29F32T08GSLBHL8-24QM:B
大数据·服务器·人工智能·科技·缓存
xhbh66611 小时前
网关端口映射和路由器端口转发有什么区别?配置要点全解析
运维·服务器·网络·智能路由器·端口映射·映射·无痕网关
STDD11 小时前
Soulmask《灵魂面具》 专用服务器搭建教程
运维·服务器·github