業務自動化ツールn8nをローカル環境で利用している方は多いのではないでしょうか。
ローカル環境は手軽にテストできる反面、デフォルトのHTTP接続ではセキュリティ上の懸念や、外部サービスとの連携で問題が発生することがあります。
特に、Webhookを利用する多くのサービスでは、HTTPS接続が必須条件となっています。
「ローカルだから」と後回しにしていたHTTPS化ですが、実は「mkcert」というツールを使えば、驚くほど簡単に実現できるのです。
この記事では、2026年2月時点の情報に基づき、mkcertを使ってローカル環境のn8nにSSL証明書を設定し、安全で快適な開発環境を構築する手順を、初心者の方にも分かりやすくガイドします。
この一手間で、あなたのn8n開発はさらに本格的になります。
なぜローカル環境のn8nにHTTPS化が必要なのか?
「ローカル環境なのだから、外部に公開するわけでもないしHTTPSは不要では?」と考える方もいるかもしれません。しかし、ローカル環境であってもn8nをHTTPS化することには、開発効率とセキュリティを向上させる明確なメリットが存在します。
セキュリティの向上とブラウザの警告回避
近年、主要なウェブブラウザはセキュリティ意識の高まりから、HTTP接続に対して「保護されていない通信」といった警告を表示するようになりました。ローカル環境であっても、このような警告は気分の良いものではありません。HTTPS化することで、ブラウザのアドレスバーに安心の鍵マークが表示され、よりセキュアな状態で開発に集中できます。また、パスワードやAPIキーなどの機密情報を扱うワークフローを開発する際にも、通信が暗号化されているという安心感は非常に重要です。
外部サービスとのWebhook連携をスムーズに
n8nの強力な機能の一つが、外部サービスからの通知をトリガーにワークフローを実行するWebhookです。しかし、Stripe、GitHub、Slackなど、多くのクラウドサービスはWebhookのエンドポイントとしてHTTPS URLしか受け付けません。ローカル環境のn8nがHTTPのままだと、これらのサービスからのWebhookを直接受信してテストすることができず、開発のたびにngrokのようなトンネリングツールを使う必要があり、手間がかかります。ローカル環境をHTTPS化してしまえば、このような余計な手間から解放され、シームレスな連携テストが可能になります。
本番環境との差異をなくす開発のベストプラクティス
これは少し専門的な視点ですが、優れた開発とは「開発環境と本番環境の差を可能な限り小さくする」ことです。ローカルではHTTPで動いていたものが、本番のHTTPS環境にデプロイした途端に動かなくなる、というトラブルは頻繁に発生します。ローカル環境の段階からHTTPSで開発を行うことで、証明書関連の問題や、セキュアな接続を前提としたAPIの挙動などを早期に発見・解決でき、デプロイ後の「まさか」を防ぐことができます。これは、n8nを使った本格的な自動化システムを構築する上で、非常に重要な考え方です。
mkcertとは?自己署名証明書との違い
HTTPS化と聞くと、OpenSSLなどを使って「自己署名証明書」を作成する方法を思い浮かべる方もいるかもしれません。しかし、この方法には少し厄介な問題がありました。そこで登場するのが、本記事の主役であるmkcertです。
従来の自己署名証明書の課題
OpenSSLなどで作成したSSL証明書は、文字通り「自分で自分を証明している」だけのものです。そのため、ChromeやFirefoxなどのブラウザは「この証明書の発行元は信頼できない」と判断し、アクセスするたびに「プライバシーエラー」や「セキュリティリスク」といった警告画面を表示します。開発者はその都度、警告を無視してページに進む操作を強いられ、非常にストレスでした。さらに、この操作を繰り返すことで、本物のセキュリティ警告に対する感度が鈍ってしまうという、潜在的なリスクも抱えていました。
mkcertがすべてを解決する仕組み
mkcertは、この問題を根本から解決するために作られたシンプルなツールです。mkcertは以下の2ステップで、ブラウザに怒られない「信頼された」ローカル証明書を発行します。
- ローカル認証局(CA)の作成と信頼:
mkcert -installというコマンドを実行すると、mkcertはPC内に自分だけの小さな「認証局(CA)」を作成します。そして、その認証局をOSの信頼リスト(トラストストア)に自動で登録します。これにより、お使いのPCとブラウザは「この認証局が発行した証明書は信頼できる」と認識するようになります。 - 信頼された証明書の発行: あとは
mkcert localhostのような簡単なコマンドで、先ほど作成したローカル認証局によって署名されたSSL証明書を発行できます。ブラウザは、この証明書の発行元が信頼リストにあるため、警告を一切表示しません。
つまり、面倒な信頼設定をすべて自動で行い、警告フリーなローカルHTTPS環境をワンコマンドで実現してくれるのがmkcertなのです。
mkcertを使うメリットまとめ
- セットアップが非常に簡単: 数個のコマンドを実行するだけで、すぐに利用を開始できます。
- ブラウザの警告が一切出ない: 開発中のストレスがなくなります。
- 自由なホスト名に対応:
localhostや127.0.0.1はもちろん、n8n.localのようなオリジナルのホスト名でも証明書を発行できます。 - クロスプラットフォーム: macOS, Windows, Linuxに対応しています。
- Docker環境でも利用可能: 本記事で後述するように、Dockerでn8nを動かしている場合でも簡単に連携できます。
【実践】mkcertを使ってn8nをHTTPS化する手順
それでは、実際にmkcertを使い、Dockerで動作しているローカルのn8n環境をHTTPS化していきましょう。ここでは、多くのユーザーが利用しているdocker-composeを使った構成を前提に解説します。
Step 1: mkcertのインストール
まず、お使いのOSに合わせてmkcertをインストールします。ターミナル(Windowsの場合はコマンドプロンプトやPowerShell)を開いて、以下のコマンドを実行してください。
macOS (Homebrewを使用):
brew install mkcert
brew install nss # Firefoxをサポートする場合
Windows (Chocolateyを使用):
choco install mkcert
Linux:
公式ドキュメントに従って、お使いのディストリビューションに合わせたインストール手順を実行してください。
Step 2: ローカル認証局(CA)の作成
インストールが完了したら、以下のコマンドを実行してローカルCAを作成し、PCに信頼させます。
mkcert -install
「The local CA is now installed in the system trust store!」のようなメッセージが表示されれば成功です。このコマンドは一度だけ実行すればOKです。
Step 3: n8n用のSSL証明書と秘密鍵を発行
次に、n8nで使用するSSL証明書を発行します。証明書を保存するためのディレクトリを作成し、そこで作業しましょう。
mkdir -p ~/.n8n/certs
cd ~/.n8n/certs
mkcert localhost 127.0.0.1
このコマンドを実行すると、~/.n8n/certsディレクトリ内にlocalhost+1-key.pem(秘密鍵)とlocalhost+1.pem(証明書)という2つのファイルが生成されます。
Step 4: n8n (Docker) の設定変更
最後に、n8nのdocker-compose.ymlファイルを編集して、HTTPSを有効化し、作成した証明書を読み込むように設定します。
docker-compose.ymlファイルを開き、services > n8n のセクションを以下のように編集してください。
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=https
# ↓↓↓ ここから追記 ↓↓↓
- N8N_SSL_KEY=/root/.n8n/certs/localhost+1-key.pem
- N8N_SSL_CERT=/root/.n8n/certs/localhost+1.pem
# ↑↑↑ ここまで追記 ↑↑↑
- NODE_ENV=production
- WEBHOOK_URL=https://localhost:5678/
volumes:
- ~/.n8n:/root/.n8n
# ↓↓↓ ここから追記 ↓↓↓
- ~/.n8n/certs:/root/.n8n/certs:ro
# ↑↑↑ ここまで追記 ↑↑↑
変更点のポイント:
environment:N8N_PROTOCOL=httpsを設定し、n8nをHTTPSモードで起動させます。N8N_SSL_KEYとN8N_SSL_CERTに、コンテナ内の証明書ファイルへのパスを指定します。(パスのプレフィックスは/root/.n8n/になる点に注意してください)
volumes:~/.n8n/certs:/root/.n8n/certs:roを追記し、先ほどホストマシンで作成した証明書ディレクトリを、コンテナ内に読み取り専用(ro)でマウントします。
ファイルを保存したら、以下のコマンドでn8nを再起動します。
docker-compose up -d --force-recreate
これで設定は完了です!ブラウザで https://localhost:5678 にアクセスしてみてください。アドレスバーに鍵マークが表示され、警告なしでn8nの画面が開くはずです。
発展的な使い方とトラブルシューティング
基本的な設定は完了しましたが、ここではさらに一歩進んだ使い方や、発生しがちな問題の解決策について解説します。
カスタムドメイン(例: n8n.local)でアクセスする方法
localhostではなく、n8n.localのような、より本番環境に近い独自のドメインでアクセスしたい場合も簡単です。まず、Step 3の証明書発行コマンドを以下のように変更します。
cd ~/.n8n/certs
mkcert n8n.local
次に、n8n.localというドメイン名が自分のPC(127.0.0.1)を指すように、hostsファイルを編集する必要があります。
hostsファイルの場所:
- macOS/Linux:
/etc/hosts - Windows:
C:\Windows\System32\drivers\etc\hosts
管理者権限でこのファイルを開き、以下の1行を末尾に追記します。
127.0.0.1 n8n.local
最後に、docker-compose.ymlのN8N_HOSTや証明書パスもn8n.local用に変更し、再起動すればhttps://n8n.local:5678でアクセスできるようになります。
証明書の有効期限と更新方法
mkcertで発行される証明書の有効期限は、デフォルトで約2年3ヶ月です。ローカル開発用途では十分な長さですが、もし有効期限が近づいてきたら、以下のコマンドで簡単に証明書を更新できます。
cd ~/.n8n/certs
mkcert -renew localhost 127.0.0.1
これにより、既存の証明書ファイルが新しい有効期限のもので上書きされます。更新後はn8nのコンテナを再起動するのを忘れないようにしましょう。
よくあるエラーと対処法
- 「証明書が信頼されていない」というエラーが消えない:
mkcert -installコマンドが正しく実行されたか確認してください。- Firefoxを使用している場合、別途
nssというツールが必要です(Step 1参照)。インストール後、再度mkcert -installを実行してみてください。 - PCを再起動すると解決する場合があります。
- n8nコンテナが起動しない、またはエラーで終了する:
docker-compose.ymlに記述した証明書ファイルへのパス(N8N_SSL_KEY,N8N_SSL_CERT)が正しいか確認してください。コンテナ内のパスとホストのパスを混同しないように注意が必要です。- ボリュームマウントの設定(
volumes)が正しいか確認してください。特に、:ro(読み取り専用)を付け忘れていないか見直しましょう。
まとめ:安全なローカル環境でn8nの可能性を最大限に
この記事では、mkcertという便利なツールを使って、ローカルで稼働するn8nを簡単にHTTPS化する手順を詳しく解説しました。この設定を行うことで、セキュリティが向上するだけでなく、これまで手間がかかっていた外部サービスとのWebhook連携テストもスムーズに行えるようになり、開発効率が飛躍的に向上します。
ローカル開発環境の整備は、本格的な自動化ワークフローを構築するための重要な第一歩です。ぜひこの機会に、あなたのn8n環境をアップグレードしてみてください。
「これからn8nを本格的に使ってみたいけれど、サーバー管理は少し不安…」という方には、セットアップ不要ですぐに始められるn8n公式のクラウド版もおすすめです。無料プランから試すことができるので、まずは気軽に触ってみてはいかがでしょうか。
また、n8nの基本的な概念から具体的なワークフローの作り方まで、体系的に学びたい方は、当サイトのn8n完全ガイド記事もぜひご覧ください。あなたの業務自動化の旅を力強くサポートします。