
内网IP地址支持HTTPS访问
需求背景
如果网页中需要访问麦克风、摄像头等设备,必须要在HTTPS环境活着localhost环境。如果服务器不能访问外网从而无法绑定域名,就需要让ip支持https。
解决思路是使用自签名证书,将ip设置为https类型服务。
实现
1:生成自签名 SSL/TLS 证书
使用 OpenSSL 工具生成私钥和自签名证书(Windows、Linux、Mac 均内置或可安装 OpenSSL)。
安装 OpenSSL
Windows:下载 OpenSSL 安装包 或通过 Chocolatey 安装 choco install openssl;
Linux:通过包管理器安装(如 sudo apt install openssl 或 sudo yum install openssl);
Mac:内置 OpenSSL,可通过 brew install openssl 升级。
生成证书和私钥
在终端 / 命令提示符中执行以下命令,生成 server.key(私钥)和 server.crt(证书):
# 生成私钥(2048位 RSA 加密,无密码保护,避免服务启动时手动输入密码)
openssl genrsa -out server.key 2048
# 生成证书签名请求(CSR),按提示输入信息(内网可随意填写,如 Common Name 填 192.168.1.1)
openssl req -new -key server.key -out server.csr
# 生成自签名证书(有效期 3650 天,即 10 年,避免频繁更新)
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
执行完成后,当前目录会生成 3 个文件:
server.key:私钥(需保密,仅服务端使用);
server.csr:证书请求文件(生成证书后可删除);
server.crt:自签名证书(可公开,提供给客户端验证)。
2:配置服务端启用 HTTPS(以NGINX举例)
将 server.key 和 server.crt 复制到 Nginx 证书目录(如 /etc/nginx/ssl/);
修改 Nginx 配置文件(如 /etc/nginx/conf.d/default.conf):
server {
listen 3000 ssl; # 监听 3000 端口并启用 SSL
server_name 192.168.1.1; # 内网 IP
# 证书和私钥路径
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# SSL 优化配置(可选)
ssl_protocols TLSv1.2 TLSv1.3; # 支持的 TLS 版本
ssl_ciphers HIGH:!aNULL:!MD5; # 加密算法
# 反向代理到原 3000 端口的 HTTP 服务(如果服务本身是 HTTP)
location / {
proxy_pass http://127.0.0.1:3000; # 代理到本地 3000 端口的 HTTP 服务
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
检查配置并重启 Nginx
sudo nginx -s reload
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果