SSL証明書およびServBay CAのトラブルシューティング
本ドキュメントは、ServBayローカル開発環境でよくあるSSL証明書やServBay CAに関する問題とその対処法について解説します。
ブラウザで「SSL証明書が信頼されていません」と表示される理由
ServBayでホストしているローカルサイトへブラウザからアクセスした際、次のような警告が表示される場合は、SSL証明書の設定に問題がある可能性が高いです。
- Chrome / Edge:
Your connection is not private
(プライベートな接続ではありません)- エラーコード
NET::ERR_CERT_AUTHORITY_INVALID
- エラーコード
NET::ERR_CERT_COMMON_NAME_INVALID
(これは少ないですが、証明書とドメイン名が一致しない場合に表示されることがあります)
- Firefox:
Warning: Potential Security Risk Ahead
(警告:潜在的なセキュリティリスク)- 「詳細」ボタンをクリック後、エラーコード
SEC_ERROR_UNKNOWN_ISSUER
が表示される場合があります - エラーコード
SSL_ERROR_BAD_CERT_DOMAIN
(証明書とドメイン名が一致しない場合)
- Safari:
This Connection Is Not Private
(この接続はプライベートではありません)Safari can't verify the identity of the website "your-domain.test"
(Safariは”your-domain.test“の正当性を確認できません)
この問題の主な原因は、ServBay User CA
またはServBay Public CA
が正しくインストール・信頼されていないことです。発生しうる状況としては以下のものがあります。
- ServBayのルート証明書がシステムの信頼リストに追加されていない。
- 以前にMAMPやLaravel Herd等、他のローカル開発環境で同じドメイン名(例:
myapp.test
)を利用しており、それらの証明書とServBayの証明書が競合したりブラウザに誤ったキャッシュが残った場合。
解決方法
以下の手順に従ってください。
- ServBayを開く
- 設定 (Settings) を開き、ServBay Root CA セクションを見つけます。
- ServBay Root CAを再インストール (Reinstall ServBay Root CA) をクリックしてください。ServBayがルート証明書のインストールと信頼の問題を自動で修復します。
- 全てのブラウザを完全に終了し、再起動 してください(全てのウィンドウとプロセスを閉じることでSSLキャッシュをクリアします)。
- 再度、ご自身のサイトへアクセスしてください。SSL証明書エラーが解消されているはずです。
もし問題が解消しない場合は:
システム内に古いもの・競合するもの・無効な証明書が残存している可能性があります。特に、MAMPやHerd等の別ツールで同じドメインに証明書が発行されたことがある場合に起こりやすいです。
- macOSのキーチェーンアクセス (Keychain Access) アプリケーションを開きます(「アプリケーション」>「ユーティリティ」から起動可能)。
- 画面右上の検索ボックスに、問題のあるドメイン名(例:
myapp.test
、またはmamp
、herd
といったキーワードでも検索してみてください)を入力します。 - 上部の「種類」フィルタで**証明書 (Certificates)**を選択します。
- 検索結果から、入力したドメインに関連する全てのSSL証明書を探します。発行者(Issuer)が
ServBay User CA
、MAMP Development CA
、Laravel Herd CA
やそれに類似した名称かどうかも確認してください。 - 問題のドメインに関連し、特に発行者が
ServBay User CA
以外の証明書や不審なものを選択し、Delete
キーで削除します。システムパスワードの入力が必要な場合もあります。誤って他の証明書を消さないよう、ローカル開発のドメインに紐づくもののみにご注意ください。 - (任意ですが推奨) 再度
ServBay User CA
およびServBay Public CA
で検索し、証明書が存在し、かつアイコンに赤い"x"(信頼されていない印)が付いていないかを確認しましょう。もし赤い"×"が表示されていれば、証明書をダブルクリックして[信頼]セクションを展開し、「この証明書を使用する時 (When using this certificate)」を「常に信頼 (Always Trust)」に設定します。 - ServBayアプリケーションに戻ります。
- 設定 (Settings) → ServBay Root CAへ移動。
- 全ServBayユーザー証明書を再作成 (Recreate All ServBay User Certificates) をクリックします。ServBay配下すべてのサイトで証明書を再生成します。
- Mac本体を再起動してください。これにより全サービスやシステムコンポーネントが最新の証明書・信頼設定で起動します。
- ブラウザを再起動し、再度Webサイトにアクセスしてください。
これら一般的なエラー事例を知ることで、SSL証明書の信頼性が問題かどうかを素早く判別し、的確な解決策にたどりつくことができます。
SSL証明書を紛失した場合は?
ServBayでローカルサイトの開発中、何らかの原因でSSL証明書ファイルが失われてしまうことがあります。これによりWebサーバ(Nginx、Caddy、Apache等)が起動できなくなったり、証明書関連のエラーがログに記録されたりします。
症状の説明
ServBayが自動的に発行したSSL証明書ファイル(.crt
および.key
)が無くなった場合、Webサーバのエラーログに以下のような記述が見られることがあります。これらは、お使いのWebサーバが指定された証明書ファイルパスを発見できなかった、あるいは読み込めなかったことを示しています。
代表的なエラー例は以下の通りです。
Nginxエラー例:
nginx: [emerg] cannot load certificate "/Applications/ServBay/ssl/private/tls-certs/servb3ay.host/servbay.host.crt": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/Applications/ServBay/ssl/private/tls-certs/servb3ay.host/servbay.host.crt, r) error:10000080:BIO routines::no such file)
nginx: configuration file /Applications/ServBay/package/etc/nginx/nginx.conf test failed
2
Caddyエラー例:
Error: loading http app module: provision http: getting tls app: loading tls app module: provision tls: loading certificates: open /Applications/ServBay/ssl/private/tls-certs/servbay.host/ser3vbay.host.crt: no such file or directory
Apacheエラー例:
AH00526: Syntax error on line 15 of /Applications/ServBay/package/etc/apache/vhosts/servbay.host.conf:
SSLCertificateFile: file '/Applications/ServBay/ssl/pri3vate/tls-certs/servbay.host/servbay.host.crt' does not exist or is empty
2
これらのエラーの本質は共通しており、サーバ設定に記載されたSSL証明書ファイルパスに該当するファイルが無い、またはアクセスできないことが原因です。
解決方法
ServBayが自動で発行するローカルサイトのSSL証明書については、証明書紛失時に自動検出し、再発行する便利な仕組みがあります。
手順は以下となります:
- ServBayアプリを起動: ServBayアプリが実行中であることを確認します。
- サイト一覧に移動: ServBayアプリの左側メニューでサイトをクリックします。
- 対象サイトを選択: SSL証明書紛失エラーが出ているローカルサイト名を一覧から探し、クリックします。
- 自動検出&再発行: サイト設定を開くと、必要なSSL証明書ファイルが存在するかServBayが自動チェックします。
.crt
や.key
が紛失していれば、自動的に新しい証明書を再発行し、所定のディレクトリ(/Applications/ServBay/ssl/private/tls-certs/あなたのドメイン/
)へ配置されます。 - Webサーバ再起動: 証明書が再生成・配置された後、該当Webサーバ(Nginx, Caddy, Apacheなど)のパッケージを再起動してください。左メニューのソフトウェアパッケージ項目に進み、該当するWebサーバの再起動ボタン(循環する矢印アイコン)をクリックします。
- 解決確認: サーバの再起動が正常に完了したら、ブラウザからHTTPSアクセスで対象サイトを開きましょう(例:
https://あなたのドメイン
)。エラーが解消し、HTTPSで正しく接続できるか確認してください。
注意事項
- ここで紹介した自動復旧は、ServBayが自動で発行したSSL証明書にのみ適用されます。独自にインポートしたSSL証明書を利用している場合、その紛失はServBayで自動再発行されません。証明書ファイルの再取得・再インポート作業を手動で行ってください。
- ServBayは組込のServBay User CAでローカルサイト証明書を発行し、HTTPS通信を実現しています。もしブラウザでローカルSSLサイトにアクセスしても信頼されていない警告が出る場合は、ServBay User CAがOSまたはブラウザで信頼されていない可能性があります。その際は、ServBay CAの信頼設定方法ドキュメントをご参照ください。
- ServBayはサイト構成やSSL証明書を含むバックアップ機能を備えています。万一に備え、定期的なバックアップをおすすめします。
よくある質問 (FAQ)
Q: ServBayはなぜローカルサイト用SSL証明書を自動発行するのですか?
A: ServBayは開発者向けの本格的なローカル開発環境を提供するため、実運用環境を模したHTTPS通信やデバッグができるよう、組み込みのServBay User CAを使ってローカルサイトに自動でSSL証明書を発行しています。
Q: 独自に取得したSSL証明書は使えますか?
A: はい、ServBayはユーザーが取得したSSL証明書(ACME / Let's Encrypt経由など)のインポートや利用をサポートしています。本トラブルシューティングはServBay自動生成証明書のみ対象です。
Q: 証明書の再発行は安全ですか?
A: はい、ローカル開発環境内でのみ利用され、ServBay User CAで署名された証明書です。本番サイトやインターネット上のセキュリティには影響ありません。
まとめ
ServBayはローカル開発環境におけるSSL証明書管理を手軽に行える仕組みを提供しています。もしServBayが自動発行したローカルサイトのSSL証明書が紛失しても、数ステップ操作するだけで自動的に検出・再発行し、HTTPSアクセスもすぐに復旧可能です。