0

我正在使用这个模板设置我的开发环境。我的目标是获得对麦克风的访问权限,因此我可以开始使用 Web Audio API 开发一个小项目。我在 Windows 7 笔记本电脑上运行服务器并在本地访问它工作正常 -> 我打开 localhost,调用 navigator.mediaDevices.getUserMedia 并获得对流的访问权限。但是,我想在我的手机上运行它(诺基亚 6 和 Android 9)。但是要访问那里的麦克风,我的本地主机需要 HTTPS,我无法让 Windows 7 信任我生成的证书。(或者至少 Chrome 是这么说的。也在 Opera 上测试过。)

我通过修改 webpack express 服务器的一些配置(希望是正确的方式)将我的服务器设置为使用 https 和生成的证书在 /build/dev-server.js 我有(除了模板中的所有其他逻辑):

const app = express()
const options = {
  key: fs.readFileSync(path.join(__dirname, '../cert/server.key')),
  cert: fs.readFileSync(path.join(__dirname, '../cert/server.crt')),
  ca: fs.readFileSync(path.join(__dirname, '../cert/rootCA.pem'))
}
const server = https.createServer(options, app).listen(port)

我通过了 webpack 验证并且服务器成功运行,但是浏览器仍然显示 NET::ERR_CERT_AUTHORITY_INVALID,即使我提供了 SAN(至少我认为我这样做)我按照这篇文章使用 OpenSSL 生成了一个证书。这里的不同之处在于,本文给出了一个 IIS 服务器证书配置的示例(通过 mmc.exe),而我的应用程序只是一个 webpack express 服务器,在本地运行。所以我在同一个地方做了文章建议的两个 -> 在个人证书下我添加了 rootCA.pem 和 server.pfx。在受信任的根证书颁发机构下,我导入了 rootCA.pem,但没有收到文章所述的警告消息。

那没有用。

我无法使用其他工具生成证书。无法使用 makecert.exe 生成(没有更努力,因为它已被弃用)并且 New-SelfSignedCertificate cmdlet 在 Windows 7 Powershell 中不可用。

你能帮我找出我做错了什么吗?我是否正确配置了 webpack,如果是,那么信任我的自签名证书的正确方法是什么?

4

2 回答 2

0

如果有人偶然发现这篇文章并试图实现类似的东西 - 去检查 ngrok - 在 Linux 上,只需下载 snap,在特定端口上运行你的本地主机服务器,然后在 ngrok 所在的终端中输入'./ngrok http {你的 localhost 端口}' 并且你已经启用了 https。它非常适合开发目的。快乐编码!:)

于 2019-12-07T06:03:19.267 回答
0

您可以在没有 HTTPS 的情况下对这些 API 使用http://localhost。这样做是为了让您可以更轻松地开发应用程序。

我已经将其中几个 API 用于不同的项目。我也使用过 USB 和蓝牙。

现在从外部设备访问将需要真正的 HTTPS。

对我来说,通过部署到测试源更容易从设备进行测试。如果有帮助,我会使用 S3 和 CloudFront。

于 2019-11-04T00:10:00.950 回答