Настройте HTTPS для локального хоста, чтобы получить доступ к микрофону на телефоне через USB - PullRequest
0 голосов
/ 30 октября 2019

Я настраиваю свою среду разработки, используя этот шаблон. Моя цель - получить доступ к микрофону, чтобы я мог начать разработку небольшого проекта с использованием API Web Audio. Я запускаю сервер на ноутбуке с Windows 7 и локальный доступ к нему работает нормально -> Я открываю localhost, вызываю navigator.mediaDevices.getUserMedia и получаю доступ к потоку. Тем не менее, я хочу запустить его на своем телефоне (Nokia 6 с Android 9). Но чтобы получить доступ к микрофону, моему локальному хосту нужен HTTPS, и я не могу заставить Windows 7 доверять моему сгенерированному сертификату. (Или, по крайней мере, Chrome говорит об этом. Протестировано и в Opera.)

Я настроил свой сервер на использование https и сгенерированного сертификата, изменив некоторые конфигурации экспресс-сервера webpack (надеюсь, правильный путь). В / 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)

Я прошёл валидацию веб-пакета, и сервер успешно работает, но браузер по-прежнему говорит NET :: ERR_CERT_AUTHORITY_INVALID, хотяЯ предоставляю SAN (по крайней мере, я так думаю), я генерирую сертификат, используя OpenSSL, следуя этой статье. Разница здесь в том, что в статье приведен пример конфигурации сертификата сервера IIS (через mmc.exe), а мое приложение - просто экспресс-сервер webpack, работающий локально. Поэтому я делаю то, что предлагает статья в одном месте -> под личными сертификатами я добавляю и rootCA.pem, и server.pfx. В Trusted Root Certification Authorities я импортировал rootCA.pem, но не получил предупреждающее сообщение, как сказано в статье.

Это не сработало.

У меня возникли проблемы при создании сертификата с другими инструментами. Невозможно сгенерировать с помощью makecert.exe (не пытался больше, потому что он устарел), а командлет New-SelfSignedCertificate недоступен в Windows 7. Powershell.

Не могли бы вы помочь мне понять, что я делаю неправильно? Правильно ли я настраиваю веб-пакет, и если да, то как правильно доверять моему самозаверяющему сертификату?

1 Ответ

0 голосов
/ 04 ноября 2019

Вы можете использовать http://localhost для этих API без HTTPS. Это сделано таким образом, чтобы вы могли легче разрабатывать приложения.

Я использовал несколько из этих API для различных проектов. Я также использовал USB и BlueTooth.

Теперь для доступа с внешнего устройства потребуется настоящий HTTPS.

Для меня проще тестировать с устройств, развернув их в исходном месте. Я использую S3 и CloudFront, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...