Невозможно подключить Browsersync к серверу DDEV nginx из-за ошибки SSL

Я запускаю сервер DDEV nginx на сайте Bedrock wordpress и пытаюсь загрузить фрагмент для Browsersync.

gulpfile.js задача browserSync:

browserSync.init({
proxy: {
 target: "https://web.ddev.site"
}, 
https: {
 key: "/Users/user/Library/Application Support/mkcert/rootCA-key.pem",
 cert: "/Users/user/Library/Application Support/mkcert/rootCA.pem"
}, open:false}); 

Браузер не загружает фрагмент и не выводит следующую ошибку:

(index):505 GET https://web.ddev.site:3000/browser-sync/browser-sync-client.js?v=2.26.7 net::ERR_SSL_KEY_USAGE_INCOMPATIBLE

Как я могу заставить эти две вещи работать вместе? До DDEV я использовал MAMP, но DDEV имеет гораздо лучшую производительность, и я хочу переключиться на это приложение. Спасибо за помощь.


person hexcross    schedule 14.01.2020    source источник
comment
Пожалуйста, начните с самого начала. Можете ли вы использовать в своем проекте обычный браузер?   -  person rfay    schedule 14.01.2020
comment
Да, сервер nginx запустился без проблем. Все работает нормально, за исключением того, что я не могу получить доступ к скрипту Browsersync.   -  person hexcross    schedule 14.01.2020
comment
И снова вопрос: можете ли вы использовать обычный браузер (например, Chrome) и получать доступ к своему проекту через https? Вы когда-нибудь раньше использовали описанную выше технику с BrowserSync для доступа к сайту https? Наиболее вероятная проблема (при условии, что вы можете получить доступ к проекту с помощью https в другом браузере) заключается в том, что ваш метод просто не работает. У вас есть ссылка на эту технику?   -  person rfay    schedule 14.01.2020
comment
Да, я могу получить доступ к своему проекту через https. Я успешно запустил проект через ddev start и никогда не пробовал запускать Browsersync через https или прокси ... возможно, моя конфигурация полностью неверна. Я думаю, что необходимо привязать некоторые порты браузера к докеру или что-то в этом роде ...   -  person hexcross    schedule 14.01.2020
comment
О, я вижу. Вы делаете совершенно неправильные вещи. У вас должен быть ключ и сертификат, а вместо этого вы предоставляете ему корневой ЦС и ключ корневого ЦС. См. https://www.browsersync.io/docs/options#option-https - Работает ли если вы просто опустите строфу https? Если бы это было так, меня не удивило бы, потому что, возможно, для синхронизации браузера используется CA системы macos. Но нужный вам сертификат и ключ находятся в контейнере ddev-router. Вы можете получить к ним доступ с помощью docker cp ddev-router:/etc/nginx/certs /tmp, но они меняются при воссоздании ddev-router.   -  person rfay    schedule 15.01.2020
comment
Это работает! Я удалил опцию прокси в gulpfile.js и обновил путь к сертификату докера, который скопировал в ~/tmp. Чтобы сделать его идеальным, необходимо автоматизировать это, но пока он идеален. Большое спасибо!   -  person hexcross    schedule 15.01.2020


Ответы (1)


Проблема заключалась в неверном файле сертификатов ssl. Пришлось использовать сертификат контейнера докеров. Опция прокси больше не требуется.

После установки контейнера ddev вам нужно скопировать сертификат докера в какое-то место:

docker cp ddev-router:/etc/nginx/certs ~/tmp

После этого просто обновите путь к правильным файлам сертификатов. Моя задача gulpfile теперь выглядит так:

browserSync.init({https: {
 key: "/Users/username/tmp/master.key",
 cert: "/Users/username/tmp/master.crt"
}, open:false});

Спасибо @rfay за решение!

person hexcross    schedule 15.01.2020