見出し画像

JavaScript(Node)を使ってlocalhost(https)で自己署名証明書の挙動を確認してみる

自己署名証明書を検証する触る機会があったので記録にまとめます。

今回はこちらのブログを参考にさせて頂きました。こちらのブログさんですと本番で試す用だったのでlocalhost用に書き換えてみました。

自己署名証明書の作成

$ openssl genrsa -out server_key.pem 2048
$ openssl req -batch -new -key server_key.pem -out server_csr.pem -subj "/C=JP/ST=Chiba/L=Funabashi/O=Jugeme/OU=Dev/CN=localhost"
$ openssl x509 -in server_csr.pem -out server_crt.pem -req -signkey server_key.pem -days 73000 -sha256

サーバーの作成

const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const options = {
 key: fs.readFileSync('./server_key.pem'),
 cert: fs.readFileSync('./server_crt.pem')
};
const server = https.createServer(options, app);
app.get('/', (req, res) => {
   res.writeHead(200);
   res.end("Hello World.");
});
server.listen(3000);

ブラウザ

こんな感じで、いつも見る証明書が間違っていて危険なページを再現する事ができます。

検証結果

例えば、自己署名証明書をKeychainなどに受け入れた場合Safariでは、警告が出なくなります。ただChromeの方は受け入れてくれません。

むしろChromeのURL欄に chrome://flags/#allow-insecure-localhost を入力してEnableにするだけで警告がなくなりました。

本記事は以上になります。

MENTA

MENTAでプログラミングのサポートを行っているのでご紹介致します。


サポート頂けたらめっちゃ喜びます!