局域网内实现HTTPS

为满足安全性等需求,有时候需要在局域网内使用https,本文介绍一种可实践的方案:hosts域名映射 + nginx反向代理 + 客户端信任证书。

1、通过openssl生成证书

新建证书配置文件ssl.config

bash 复制代码
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no

[req_distinguished_name]
C = CN
ST = 广东
L = 深圳
O = 内网服务
OU = IT部
CN = 192.168.1.100  # 与访问的IP/域名一致

[v3_ca]
subjectAltName = @alt_names
# 启用CA证书标识(让系统识别为根证书)
basicConstraints = CA:TRUE
keyUsage = digitalSignature, keyEncipherment, keyCertSign
extendedKeyUsage = serverAuth, clientAuth

[alt_names]
IP.1 = 192.168.1.100  # 必须包含访问的内网IP
# 若用域名访问,添加DNS字段:
# DNS.1 = web.lan

生成证书

bash 复制代码
openssl genrsa -out server.key 2048
openssl req -new -x509 -nodes -key server.key -days 36500 -out server.crt -config ssl.config

2、nginx配置反向代理

编辑nginx.conf

bash 复制代码
   server {
      listen 443 ssl;
      server_name 192.168.1.100; #与访问的IP/域名一致
      ssl_certificate server.crt;
      ssl_certificate_key server.key;
      ssl_session_timeout 5m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
      ssl_prefer_server_ciphers on;
      ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
      
      

   }

nginx -s reload

3、将server.crt复制到访问的客户端电脑上,双击,【安装证书】;选择【本地计算机】,下一步;勾选【将所有证书放入下列存储】,浏览,选择【受信任的根证书颁发机构】,完成安装,重启浏览器,此时可以正常访问https://192.168.1.100,不会提示该地址不安全。

相关推荐
TechWayfarer6 小时前
查询IP所在地的3种方案:从API到离线库,风控场景怎么选?
开发语言·网络·python·网络协议·tcp/ip
小茴香3539 小时前
HTTP缓存
网络协议·http·缓存·面试
绝知此事10 小时前
Netty实战:从零构建高性能TCP通信服务(含心跳检测)
java·网络·spring boot·网络协议·tcp/ip
2601_9578822416 小时前
多平台数字内容集群的版权合规与风控体系:从查重检测到IP保护的技术实践
人工智能·网络协议·tcp/ip
TechWayfarer16 小时前
营销反作弊实战:用IP归属地查询平台识别虚假流量
网络·python·网络协议·tcp/ip·数据分析
xlq2232217 小时前
59.HTTP
网络·网络协议·http
Irissgwe17 小时前
二、Socket编程UDP
linux·网络·网络协议·udp·socket·socket编程
汤愈韬18 小时前
IP安全 SEC VPN_1_IA阶段各种名词讲解
网络·网络协议·安全·网络安全·security
果然途游19 小时前
网络故障一步步排查流程
网络协议·https
无风听海19 小时前
HTTP 跨站与跨域:从同源策略到现代安全边界
网络协议·安全·http