web-dev-qa-db-ja.com

自己署名証明書でサービスワーカーを使用できますか?

テストに使用する開発者サーバーがあります。 SSL自己署名証明書を使用しているため、HTTPSを介してWebアプリケーションをテストできますが、証明書が検証不可能であるという顕著な警告が表示されます。

それは問題ありませんが、navigator.serviceWorker.registerでエラーをスローするService Workerがあります

SecurityError:ServiceWorkerの登録に失敗しました:スクリプトの取得中にSSL証明書エラーが発生しました。

自己署名証明書を持つイントラネットテストサーバーでService Workerを使用するにはどうすればよいですか?

40
Keith

自己署名証明書を使用する代わりに、特定のドメインが安全であるかのようにChromeまたはFirefoxを起動できます。たとえば、Chrome Macでは、次を使用して起動できます。

/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ --user-data-dir=/tmp/foo --unsafely-treat-insecure-Origin-as-secure=http://www.your.site

サービスワーカーは http://www.your.site から作業する必要があります。

詳細については、こちらをご覧ください。 HTTP経由でサービスワーカーをテストするためのオプション

編集:変更--unsafety-...から--unsafely-...

26
Chuck

上記の受け入れられた答えは私にとってはうまくいきませんでした。この質問に対して@ stef52で示唆されているように、--ignore-certificate-errorsを追加しました Service Worker登録のエラー

chrome.exe --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-Origin-as-secure=https://localhost/

MACユーザーの場合

 ./Google\ Chrome --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-Origin-as-secure=https://localhost
5
AJC

ローカル開発では、自己署名証明書を使用します。 OSXのローカル開発に関連する問題を克服するため。次のことを行いました。

  • 証明書を作成して提供する
  • Https URLに移動します
  • 開発ツールを開く>セキュリティ>証明書を表示する
  • 証明書アイコンをデスクトップにドラッグしてダブルクリックすると、キーチェーンアクセスが開きます。
  • 証明書アイコンをドラッグしてログインし、ログインして証明書をダブルクリックします(devドメインなどの名前を付ける必要があります)。信頼ドロップダウンを開き、常に信頼を選択します。アプリに戻ってウィンドウを閉じ、httpsで再度開きます。これで、開発ドメインの「faux」httpsが得られます。
4
Lesbaa

この答えは、いくつかのチャックのポイントを繰り返しています。

特定のDomExceptionが特定のアドレスポートでローカルで発生した場合、ローカルマシンのWebリソースにアクセスするときに、これらの最新バージョンのブラウザー起動のいずれかが役立ちました。

open -a Opera.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-Origin-as-secure=https://localhost:8111

open -a Brave\ Browser.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-Origin-as-secure=https://localhost:8111

open -a Google\ Chrome.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-Origin-as-secure=https://localhost:8111

Chromiumブラウザはこれらの設定で起動しなかったため、ローカルでService WorkerでSSLを使用するためのこの特定のDomExceptionを克服できました。

この人は、この問題についてもストーリーとしていくつかの洞察を提供しました: https://deanhume.com/testing-service-workers-locally-with-self-signed-certificates/

1

私にとって、証明書を無視したり、モバイルデバイスの安全でないOriginフラグを設定したりすることはできませんでした。

ただし、ポートフォワーディングがうまくいきました。 Service Workerは、証明書で署名され、SSLを介して通信する場合でも、localhostで実行できます。したがって、基本的には、モバイルデバイスがlocalhostで実行されていると思わせますが、実際にはサーバーマシン上の実際のlocalhostに転送します。これは、次の2つの方法のそれぞれによって実現できます。

0
kudlohlavec