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