macOSで自前ビルドしたApacheをファイアウォール経由で安定接続させる
[主題]
macOSで自前ビルドしたApacheをファイアウォール経由で安定接続させる方法を説明する
[背景]
筆者は、macOSで、Apache Webサーバーを自前ビルド、ファイアウォール経由で外部接続を許可して運用している。
この環境で、外部接続が不安定(接続できたり、できなかったり)になった。具体的には、閲覧したWebブラウザで接続がリセットされました
というエラーになった。
ChatGPTとともに調査を進め、エラーを回避する事ができたので、本稿にて説明する。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Pro 2018 15.4inch(Intelベース Mac)
macOS Sequoia 15.6.1
Xcode 16.4
CommandLine Tools for Xcode 16.4.0.0.1
[発生した現象]
閲覧したWebブラウザで接続がリセットされました
というエラーが発生し、サーバーコンテンツが取得できない。
[発生条件]
以下の条件で発生する場合(接続できたり、できなかったり)がある
- macOSで自前ビルドしたApache Webサーバー
- macOS標準装備のファイアウォールをオンにする。(httpdに対して外部接続を許可)
[原因]
httpdをビルドした後、コード署名していなかった。macOSファイアウォールは、アプリケーションのコード署名を基準に許可/拒否を判断するため、署名のない自前ビルド実行ファイルは不安定になりやすい。
[対策]
httpdをビルドした後、コード署名(ad-hoc署名)を追加した。
署名方法
# macOSファイアウォール使用時、外部接続を安定化させるためにad-hoc署名
sudo codesign -s - /usr/local/apache2/bin/httpd
署名の確認方法
codesign -dv --verbose=4 /usr/local/apache2/bin/httpd
なお、署名はhttpdのバージョンアップなどによるビルドし直しの度に必要となる。また、ad-hoc署名に期限はない。
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント