開発者のための証明書作成ツール「mkcert」徹底解説


開発者のための証明書作成ツール「mkcert」徹底解説

FiloSottile/mkcert

2025-08-15

そこで、今回紹介する新兵器が mkcert だ!

まず、なぜローカル開発でHTTPSが必要なのか、そこから話そう。

本番環境とのギャップをなくす
多くの本番サービスはHTTPSを使っている。ローカル環境も同じHTTPSにすることで、本番との違いによる予期せぬバグを防げる。

セキュリティ関連機能のテスト
Service WorkerやWebAuthnなど、一部のWeb APIはHTTPS環境でないと動かない。これらの機能をテストするためにHTTPSは必須だ。

クロスオリジン通信のデバッグ
HTTPSで動くAPIに、HTTPのフロントエンドからアクセスしようとすると、ブラウザにブロックされることがある。開発段階からHTTPSで統一しておけば、この手の問題に悩まされない。

mkcert は、このローカルHTTPS環境を、めちゃくちゃ簡単に 作ってくれるツールだ。通常、証明書を作るには、難解なコマンドをたくさん打ったり、設定ファイルをいじったりする必要がある。しかし、mkcertなら、たった数個のコマンドで、ブラウザが信頼してくれる証明書を作ることができる。

よし、早速導入して作戦を開始しよう。各OSによって少し手順が違うから、自分のOSに合った方法で進めてくれ。

Chocolatey を使う

choco install mkcert

Scoop を使う

scoop install mkcert

手動でインストール

mkcertのGitHubリリースページ から、mkcert-vX.X.X-windows-amd64.exe のような最新の実行ファイルをダウンロードする。

ダウンロードしたファイル名を mkcert.exe に変更し、PATHが通っているディレクトリ(例
C:\Windows\System32)に置く。

Homebrew を使う

brew install mkcert
brew install nss # Firefoxを使う場合のみ

MacPorts を使う

sudo port install mkcert

Linuxbrew/Homebrew を使う

brew install mkcert

Snap を使う

sudo snap install mkcert

注意:Snapでインストールした場合、証明書の保存場所が他の方法と異なる場合がある。

インストールが完了したら、いよいよ証明書を作っていく。

CA(認証局)のインストール
まず、ローカル用の認証局をインストールして、ブラウザに「信頼できるやつだぞ」と教えてやる必要がある。

mkcert -install

このコマンドを一度実行すればOKだ。この認証局が、今後作る全ての証明書を「信頼済み」にしてくれる。 注:このコマンドは管理者権限を要求されることがある。

証明書の作成
次に、開発中のアプリで使う証明書を作る。例えば、localhostmyapp.test というドメインで使いたい場合、以下のコマンドを打つ。

mkcert localhost myapp.test

このコマンドを実行すると、カレントディレクトリに localhost+1.pemlocalhost+1-key.pem という2つのファイルが生成される。これらが、君のアプリが使う証明書と秘密鍵だ。

最後に、この証明書を実際にどう使うか、Node.jsのExpressフレームワークを例に見てみよう。

const express = require('express');
const https = require('https');
const fs = require('fs');

const app = express();
const port = 3000;

// 証明書ファイルを読み込む
const privateKey = fs.readFileSync('localhost+1-key.pem', 'utf8');
const certificate = fs.readFileSync('localhost+1.pem', 'utf8');
const credentials = { key: privateKey, cert: certificate };

// HTTPSサーバーを立てる
const httpsServer = https.createServer(credentials, app);

app.get('/', (req, res) => {
  res.send('Hello HTTPS!');
});

httpsServer.listen(port, () => {
  console.log(`HTTPS Server is running on https://localhost:${port}`);
});

このコードを実行したら、ブラウザで https://localhost:3000 にアクセスしてみてくれ。ブラウザが「このサイトは安全ではありません」という警告を出すことなく、正常に表示されるはずだ。


FiloSottile/mkcert




コントで学ぶPS4エミュレータ:ソフトウェアエンジニア的視点での活用法と導入ガイド

「え、エミュレータ?」って思った方もいるかもしれませんね。そうです、PS4のゲームをPCで動かすためのソフトウェアです。でも、今回は単にエミュレータの説明をするだけではありません。これを「万引きGメン」のコントに見立てて、その特徴や使い方、そしてソフトウェアエンジニアとしての視点から「どう役に立つのか」を、楽しく、そして分かりやすく解説していきましょう!


ワタシがナンバーワンになった理由:開発環境を変えた Wave Terminalの衝撃

ワタシが、あなたのプログラミングの夜を彩る、ナンバーワンホスト、〇〇だよ!今宵ご紹介するのは、wavetermdev/waveterm!ただのターミナルじゃない、これはまさに夢の統合開発環境(IDE)を内包したターミナルさ!「え?ターミナルなんて黒い画面でコマンド打つだけでしょ?」って?


ネットの「今」が見える!SNIFFNETで快適なデジタルライフを

今宵も最高の体験をあなたに。私、SNIFFNETが、あなたのインターネットライフをより豊かに、そして安全にするお手伝いをさせていただきます。SNIFFNET、そう、それはまるでホストクラブのナンバーワンホストのように、あなたのインターネットトラフィックを優雅に、そしてスマートに監視するツールです。


PowerShell: ソフトウェアエンジニアのための吉野家流自動化術

「大将!牛丼大盛り!」って、元気よく注文するでしょう?あれ、厨房の奥では熟練の職人さんたちが、手際よく肉や玉ねぎをさばいてる。PowerShellは、まるであの敏腕シェフなんです。普段、私たちはマウスでポチポチとメニューを選びます。それがGUI(Graphical User Interface)。 でも、PowerShellという「呪文」を唱えれば、キーボードだけで、もっと素早く、もっと大量の作業を一気に片付けられます。Windowsだけでなく、macOSやLinuxでも使えるようになって、まさに「吉野家の味を、世界のどこでも!」ってなわけです。


現役エンジニアが教えるOpenEMRで稼ぐ方法とキャリアアップ戦略

OpenEMRは、単なる医療ソフトウェアではなく、ソフトウェアエンジニアにとって非常に魅力的な学習、貢献、収益化のプラットフォームとなります。ドメイン知識 医療分野特有のデータ構造(患者情報、診療記録、予約、請求など)、HL7やFHIRといった標準規格、HIPAA(米国の医療情報保護規制)などの規制要件を学ぶことができます。これは、将来的にヘルステック(HealthTech)分野でキャリアを築く上で非常に強力な武器になります。


もう焼かない!Ventoyで開発・検証環境の準備ストレスから解放されよう

ただし、Ventoyは基本的にブータブルUSBドライブを作成するツールであり、一般的なソフトウェア開発で直接利用するライブラリやフレームワークとは性質が異なります。そのため、「サンプルコード」というよりは、「自動化やインフラ構築に役立つコマンドライン操作」の例としてご紹介します。


RPAの次世代形:trycua/cuaが提供する安全なデスクトップAIエージェントインフラストラクチャ

今回は、GitHubで注目を集めているプロジェクト「trycua/cua」(読み方クーア、とされています)について、ソフトウェアエンジニアの視点から、その魅力と活用法をわかりやすく解説しますね。trycua/cuaは、「Computer-Use Agents(コンピューター利用エージェント)」のためのオープンソースのインフラストラクチャです。簡単に言えば、AIエージェントがWindows、macOS、LinuxといったデスクトップOS全体を制御できるようにするためのサンドボックス、SDK(開発キット)、評価ツールを提供しています。


モビルスーツ級の高性能!k2-fsa/sherpa-onnx徹底解剖と実戦導入ガイド

「連邦の白いヤツ」...ではなく、ソフトウェアエンジニアの皆さん!今回は、オフラインでの音声処理を強力にサポートするライブラリ k2-fsa/sherpa-onnx について、その能力と活用法を、さながらモビルスーツの機能解説のように、分かりやすく、フレンドリーに解説していきます!


Android画面操作の決定版:escrcpyの導入方法とエンジニア的活用術

(司令官、机を叩いて立ち上がる)「いいか、通信兵!我々ソフトウェアエンジニアの戦場は、今やPCの中だけではない。手元のAndroid端末、テスト用の実機、あちこちに散らばるデバイスをいちいち手に取って、パスコードを打って、デバッグする……。そんなことをしていたら、私のコーヒーは冷め、納期は火の海だ!」


高速開発の秘密兵器: ホットリロードでFlutterアプリを爆速構築

Flutter(フラッター)は、モバイルアプリはもちろんのこと、デスクトップやウェブまで、一つのコードベースから複数のプラットフォームに対応する美しいアプリを素早く構築できるUIツールキットです。ソフトウェア開発者であるあなたにとって、Flutterはまさに「万能の道具箱」のような存在です。