适用于隔离网络—没有公网域名、没有出站互联网、连通性受限。
浏览器需要受信任的 HTTPS 才能通过 WebRTC 访问摄像头/麦克风。自签名证书可以工作但会显示警告。要获得干净的设置,请生成一个私有 CA 并将其分发给客户端。
生成私有 CA 和服务器证书
现代浏览器要求证书中包含使用者备用名称 (SAN)。安装程序会自动处理此问题。
选项 1:使用安装程序(推荐)
bedrud install 命令会为指定的 IP 和域生成带有正确 SAN 的自签名证书:
sudo bedrud install --tls --ip YOUR_SERVER_IP要同时包含域名:
sudo bedrud install --tls --ip YOUR_SERVER_IP --domain your.domain.com选项 2:手动生成证书
如果安装程序的内置生成不适合你的工作流程,请向 openssl 命令添加 -addext 参数:
#### Ed25519 (matches Bedrud's built-in generation, recommended)
```bash
openssl genpkey -algorithm ed25519 -out ca.key
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt \
-subj "/CN=Bedrud Internal CA"
openssl genpkey -algorithm ed25519 -out server.key
openssl req -new -key server.key -out server.csr \
-subj "/CN=<your-server-ip-or-hostname>" \
-addext "subjectAltName=IP:YOUR_SERVER_IP"
openssl x509 -req -days 1825 -in server.csr \
-CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt \
-addext "subjectAltName=IP:YOUR_SERVER_IP"
sudo ./bedrud install --tls --cert server.crt --key server.key --ip YOUR_SERVER_IPECDSA P256 (alternative)
openssl ecparam -genkey -name prime256v1 -out ca.key
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt \
-subj "/CN=Bedrud Internal CA"
openssl ecparam -genkey -name prime256v1 -out server.key
openssl req -new -key server.key -out server.csr \
-subj "/CN=<your-server-ip-or-hostname>" \
-addext "subjectAltName=IP:YOUR_SERVER_IP"
openssl x509 -req -days 1825 -in server.csr \
-CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt \
-addext "subjectAltName=IP:YOUR_SERVER_IP"
sudo ./bedrud install --tls --cert server.crt --key server.key --ip YOUR_SERVER_IPRSA (legacy compatibility, larger keys)
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt \
-subj "/CN=Bedrud Internal CA"
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr \
-subj "/CN=<your-server-ip-or-hostname>" \
-addext "subjectAltName=IP:YOUR_SERVER_IP"
openssl x509 -req -days 365 -in server.csr \
-CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt \
-addext "subjectAltName=IP:YOUR_SERVER_IP"
sudo ./bedrud install --tls --cert server.crt --key server.key --ip YOUR_SERVER_IP将 CA 添加到客户端信任存储
将 ca.crt 分发到所有客户端机器:
Windows
certmgr.msc # Right-click ca.crt → Install Certificate → Trusted Root CAsmacOS
sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain ca.crtLinux (Debian/Ubuntu)
sudo cp ca.crt /usr/local/share/ca-certificates/bedrud-ca.crt
sudo update-ca-certificatesLinux (Arch/Fedora)
sudo cp ca.crt /etc/pki/ca-trust/source/anchors/bedrud-ca.crt
sudo update-ca-trust重启浏览器,然后打开 https://YOUR_SERVER_IP(替换为服务器的实际 IP 地址,例如 192.168.1.100)。重启后,证书将被信任,摄像头/麦克风访问将正常工作,不会出现警告。
故障排除
| 问题 | 解决方案 |
|---|---|
| 浏览器仍然警告证书不受信任 | 清除浏览器缓存,安装 CA 后重启浏览器 |
| 摄像头/麦克风被阻止 | 验证 CA 位于受信任的根证书颁发机构中,而不是中间证书颁发机构 |
| 证书已过期 | 运行 sudo bedrud cert renew 重新生成(每 24 小时在 09:00 自动续期) |
| CN 不匹配 | 现代浏览器会忽略 CN 字段 — SAN 是权威依据。使用安装程序的内置证书生成(推荐)或向 openssl 命令添加 -addext 'subjectAltName=...' |
| 缺少 SAN | 现代浏览器会忽略 CN 字段。使用安装程序的内置证书生成(推荐)或向 openssl 命令添加 -addext 'subjectAltName=...' |