You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Windows与Node.js搭建本地HTTPS服务器的技术求助

嘿,我懂你要的——黑客松赶时间,搞个本地HTTPS服务器让手机连电脑摄像头,不用域名对吧?Let's Encrypt确实不适合本地无域名的场景,咱们用自签名SSL证书就行,几步快速搞定:

1. 生成自签名SSL证书(Windows环境)

没有域名的情况下,自签名证书是最直接的方案,虽然手机会提示“不安全”,但黑客松演示完全够用。

  • 打开**命令提示符(CMD)**或PowerShell,先切换到你的项目目录(比如 cd C:\my-hackathon-project)
  • 用OpenSSL生成证书:如果没装OpenSSL,直接用Git Bash自带的就行(装了Git的话右键选“Git Bash Here”),输入下面的命令:
    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
    
    执行后会让你填一些信息,重点:Common Name(CN)这里填你电脑的本地IP地址(比如192.168.1.105),其他字段直接回车跳过就行。
    完成后,你的项目文件夹里会多出key.pem(私钥)和cert.pem(证书)两个文件。
2. 用Node.js搭建HTTPS服务器+摄像头流

咱们用express做服务器,node-webcam快速获取摄像头画面,先装依赖:

npm install express https node-webcam

然后创建server.js文件,把下面的代码粘进去:

const express = require('express');
const https = require('https');
const fs = require('fs');
const NodeWebcam = require('node-webcam');

// 摄像头配置,按需调整分辨率
const webcamConfig = {
    width: 1280,
    height: 720,
    quality: 90,
    output: 'jpeg',
    callbackReturn: 'base64',
    verbose: false
};

const webcam = NodeWebcam.create(webcamConfig);
const app = express();

// 提供实时摄像头流的接口
app.get('/stream', (req, res) => {
    res.setHeader('Content-Type', 'multipart/x-mixed-replace; boundary=frame');
    
    // 每100ms推送一帧,可改数值调整帧率
    setInterval(() => {
        webcam.capture('temp', (err, base64Data) => {
            if (err) {
                console.error('摄像头捕获失败:', err);
                return;
            }
            res.write(`--frame\r\nContent-Type: image/jpeg\r\n\r\n${Buffer.from(base64Data, 'base64')}\r\n`);
        });
    }, 100);
});

// 读取SSL证书文件
const sslCredentials = {
    key: fs.readFileSync('./key.pem'),
    cert: fs.readFileSync('./cert.pem')
};

// 启动HTTPS服务器,端口用8443(避开默认443可能被占用的情况)
const server = https.createServer(sslCredentials, app);
const PORT = 8443;

server.listen(PORT, () => {
    console.log(`✅ HTTPS服务器已启动: https://192.168.1.105:${PORT}`);
    console.log(`📱 手机访问: https://192.168.1.105:${PORT}/stream`);
});

记得把代码里的192.168.1.105换成你实际的电脑本地IP。

3. 让手机信任证书(解决“不安全”提示)

手机直接访问会弹警告,得把证书装到手机里:

  • 把项目里的cert.pem传到手机上(微信/QQ发文件就行)
  • 打开手机设置,找「安全」→「加密与凭据」→「安装证书」,选择cert.pem,安装类型选「VPN和应用」(不同品牌手机路径略有差异,搜“安卓安装自签名证书”就能找到对应步骤)
  • 安装完成后,手机访问就不会再弹严重警告了(实在赶时间也可以直接点“继续访问”,演示不影响)
4. 测试访问
  • 确保电脑和手机连同一个WiFi
  • 启动服务器:在项目目录下运行 node server.js
  • 手机打开浏览器,输入https://你的电脑IP:8443/stream,就能看到实时摄像头画面了!
额外小技巧

如果node-webcam不好用,也可以换前端方案:做个简单的HTML页面,用navigator.mediaDevices.getUserMedia直接在浏览器获取摄像头,然后通过HTTPS服务器把页面发给手机,代码更轻量,适合快速演示。

内容的提问来源于stack exchange,提问作者woojoo666

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:49:55