ServiceWorkerでオレオレ証明を使って検証する場合

2017-10-12T07:40:00+09:00 JavaScript

PWA(Progressive Web Apps)を検証している時に若干つまづいたのですが、ちょっとした懸賞でnode.jsでhttpsサーバーを作りそれでserviceworkerの検証をしていた所どうやらHTTPS関連のエラーでつまづいてしまうことがあったのでそれに関することをメモしておく

server.js

var https   = require("https"),
    fs      = require("fs"),
    express = require("express");

var options = {
  key: fs.readFileSync("etc/key.pem"),
  cert: fs.readFileSync("etc/cert.pem")
};

var app = express();
app.use(express.static("public"));
app.get("/data", (req, res) => {
  res.send(String(Date.now()));
});

https.createServer(options, app).listen(443);

まぁ雑なんだけどnode.js+expressを使ってデモなHTTPSサーバーを作る。で実際PWAなアプリケーションを見てみるとキャッシュ周りのリソース取得で証明書関連っぽいエラーにより適切に処理されない模様

オレオレ証明書を使ったHTTPSサーバーで処理されるようにする方法

正しいのかはわからないですが、一応Chromeの起動オプションを設定することにより解決することが可能な模様

/path/to/google/google-chrome/chrome \
    --user-data-dir=/path/to/pwa/chrome \
    --unsafely-treat-insecure-origin-as-secure=https://localhost \
    --allow-insecure-localhost \
    --ignore-certificate-errors

終わり。これよほどな理由が無い限りはやらない方が良いとは思いますが...

ServiceWorkerを使ったアプリケーションキャッシング @PowerMockIgnoreの設定に関して