OpenSSL 4への切り替えで、すべてのmacOS CIが失敗するわけではありません。OpenSSLの主バージョンやコマンドの既定動作に依存する箇所を、実際のRunnerで比較検証してください。依存側がOpenSSL 3を必要とすると確認できた場合は、Runnerの既定値に任せず、ビルドで使うバージョンを明示します。
対象となるのは、GitHub ActionsのmacOSワークフローを保守する開発者、ネイティブ依存やRuby・Pythonなどの実行環境を扱う担当者、CIノードの切り替えを判断するDevOpsエンジニアです。
最終更新:2026年10月23日。 Runnerの変更予定と適用範囲はRunner Imagesの公式告知、現在のイメージ情報はmacOS 26 Runnerのソフトウェア一覧で確認しています。
まずRunnerの変更予定と実際の適用状況を分けます
2026年10月23日時点で、GitHub Runner Imagesの告知はmacOS 26およびXcode 27 Runnerで、既定のOpenSSLコマンドを3.xから4.xへ変更する計画を示しています。段階的な展開予定は2026年11月2日から11月8日であり、告知時点では適用完了ではありません。日程や対象は告知後に更新される可能性があるため、切り替え前に同じ告知と対象イメージの一覧を再確認します。公式告知
ここで重要なのは、変更対象が「既定で呼ばれるopensslコマンド」である点です。告知ではOpenSSL 3も引き続き提供されるとしており、既定値の変更をOpenSSL 3の削除と読み替えたり、すべてのジョブが自動的に失敗すると判断したりするのは適切ではありません。
CIログで実行ファイルとバージョンを記録します
スクリプトがPATH上のopensslを呼ぶ場合、実際に選ばれた実行ファイルとバージョンを先に記録します。openssl versionはバージョン表示の確認に使えますが、これだけではアプリケーションが実行時に読み込む共有ライブラリまでは証明できません。OpenSSLのversionコマンド資料
たとえば、診断用のステップに次を加え、ジョブのログへ出力します。
command -v openssl
which -a openssl
openssl version -a
command -vで選択されたパスを確認し、which -aでPATH上の候補も見比べます。結果が想定と異なる場合は、環境変数の設定、ジョブ内でのPATH変更、依存ツールが指定する独自パスをたどります。GitHub Actionsでは、ワークフローコマンドのログ出力方法も参照し、比較に必要な診断結果をジョブログへ残してください。
次に、バージョン文字列を使った条件分岐を検索します。たとえば、スクリプトが「3.xでなければ失敗」と決めつけていたり、出力を特定の文字列として解析したりしている場合、ビルドそのものではなく検査スクリプトだけが失敗している可能性があります。失敗箇所をログで特定し、環境確認の失敗と、コンパイル・テストの失敗を区別します。
ネイティブ依存はコンパイル・リンク・実行に分けて調べます
OpenSSL 4は主バージョンの変更です。OpenSSLの移行ガイドは、非推奨APIを利用するプログラムでは調整が必要になる可能性を説明していますが、それだけで個々のプロジェクトが非互換だとは言えません。OpenSSL 4.0移行ガイド
ログの症状は、少なくとも次の三段階に分けます。
- コンパイル時: ヘッダーファイルが見つからない、またはAPIや型に関するエラーが出る場合は、依存側の対応状況、ヘッダーの探索先、実際に選ばれたSDKを確認します。
- リンク時: シンボルが見つからない場合は、リンク対象のライブラリとライブラリ検索パスを調べます。コンパイルが通ったことだけで、リンクまで完了したとは判断できません。
- 実行時: 生成物の起動後にライブラリを読み込めない場合は、実行時の検索パスとロード対象を調べます。Appleの動的ライブラリの実行時検索パスに関する資料を参考に、ビルド時の設定と起動時の解決を分けて確認してください。
RubyやPythonなどの実行環境、またはネイティブ拡張がOpenSSLを使う場合も、言語名だけから対応を推測しないことが大切です。利用している依存パッケージの公式な対応情報を確かめ、同じRunner上で実際のビルドと実行を確認します。
TLSと証明書処理を同じ条件で再実行します
証明書やTLSを扱うジョブでは、コマンドが成功したかどうかだけでなく、入力、オプション、生成物、終了コードを比較します。たとえばopenssl x509で証明書を検査する処理では、実際に使っている引数と出力がスクリプトの期待値に合うかを確認してください。OpenSSLのx509コマンド資料
CLIのコマンドが期待通りに動いても、アプリケーションが別の共有ライブラリを読み込んでいれば、アプリ側のTLS動作まで確認できたことにはなりません。証明書検査、秘密鍵を使う処理、代表的なTLS通信を個別に実行し、対象アプリのログや終了コードも収集します。
注意:コマンドラインの成功だけを根拠に、依存アプリ全体の互換性を承認しないでください。コマンドの実行環境とアプリケーションがロードするライブラリは、別々に確認します。
本機とRunnerの差を記録してから比較します
本機で通りRunnerで失敗するときは、OpenSSLのバージョンだけを原因と決めつけず、イメージ、CPUアーキテクチャ、PATH、依存関係の取得元、キャッシュ、ロードされたライブラリを並べて確認します。GitHub Actionsではジョブごとに実行するRunnerを選択するため、まずRunner選択に関する公式資料と、対象Runnerのイメージ情報を照らし合わせます。
比較は同じコミットで行い、変更前後のジョブログを保存します。キャッシュを使うジョブでは、依存物の再利用で古いビルド成果物が残っていないかも検証対象にします。OpenSSL以外のツールチェーン変更や環境差があれば、それも同じ記録に残し、バージョン変更との混同を避けてください。
代表ジョブの結果で移行方針を選びます
| 選択肢 | 適用する条件 | 受け入れ時に確認すること |
|---|---|---|
| OpenSSL 4へ適応する | 依存側の対応情報が確認でき、代表ジョブの検証が通る | コンパイル、リンク、実行、証明書・TLS処理を同じコミットで確認します |
| OpenSSL 3を明示して使う | 依存側がOpenSSL 3を必要とする、または4.xで問題が再現する | 導入した実行ファイル、ヘッダー、リンク先、実行時ライブラリが3.xを指すことを確認します |
| 切り替えを保留する | 互換性の根拠や再現条件が不足している | 変更範囲を限定し、失敗時に戻す条件と担当者を決めます |
OpenSSL 3が必要と判明した場合は、Runnerの既定値が将来も同じだと仮定せず、ワークフローで使用バージョンと参照先を明示します。GitHubの告知も特定バージョンを明示する方法を緩和策として挙げています。Runner Imagesの変更告知
実施前には、次の項目を確認してください。
- [ ] macOS Runnerのイメージと、ログに出たOpenSSLの実行パス・バージョンを保存した
- [ ] バージョン文字列、既定オプション、コマンド出力に依存するスクリプトを確認した
- [ ] ネイティブ依存のコンパイル、リンク、実行時ロードを別々に試した
- [ ] 証明書の生成・検査と代表的なTLS処理を、実際の引数で再実行した
- [ ] 同じコミットの前後ログを比較し、キャッシュや環境差を記録した
- [ ] OpenSSL 4への適応、OpenSSL 3の明示、切り替え保留のいずれを選ぶか決めた
- [ ] 失敗時に対象ジョブを戻す条件を定め、段階的に適用する準備をした
最初から全ワークフローを一括変更せず、ネイティブ依存のビルド、証明書処理、TLS通信を含む代表的なジョブで受け入れます。結果が安定し、失敗時の切り戻し条件も明確になってから、対象を広げます。
よくある確認事項
OpenSSL 4への切り替えだけで、すべてのmacOS CIが失敗するわけではありません
影響が集中するのは、特定の主バージョンを想定するスクリプトや、依存ライブラリ、コマンドの既定動作に依存する処理です。まずRunnerで実際に呼ばれたコマンドとバージョンを確認し、同じコミットのジョブで差を検証します。
GitHub ActionsのmacOS Runnerで実際のopensslを確認します
command -v openssl、which -a openssl、openssl version -aをジョブ内で実行し、ログを保存します。実行ファイルの表示とアプリが読み込むライブラリは別に確認し、出力だけで互換性を判断しないようにします。
OpenSSL 3を継続利用する場合は参照先を明示します
依存側の要件でOpenSSL 3が必要なら、導入方法だけでなくPATH、ヘッダー、リンク先、実行時ロード先も明示します。設定後はビルドと実行を再検証し、Runnerの既定値に依存した状態を残さないようにします。
移行前はビルドとTLS処理を一緒に確認します
コンパイル、リンク、実行時ロードのほか、証明書の生成・検査、アプリケーションのTLS通信を検証します。前後で同一コミットのログを比較し、キャッシュやCPUアーキテクチャなどOpenSSL以外の差も記録してください。
macOS CIのOpenSSL 4対応を決めるには、実際の依存関係とRunner上での再現結果が必要です。本機だけでは同じRunner条件を用意しにくい場合、ローカルMacの購入、既存CIの利用、独立したMac環境での比較実行を、稼働期間や運用負荷に応じて検討できます。常時稼働の重い処理や物理機器が必要なら購入・自社運用が合う場合もありますが、短期間の受け入れ検証では、初期購入や環境維持の負担を避けられるMacレンタルも選択肢です。RUVCLOUDのMac環境を使った独立ノードが必要か検討する際は、利用料金も照らし合わせ、同じプロジェクトと検査条件で対照ジョブを実行できるか確認してください。