更新日 | 更新内容 |
---|---|
2025/07/03 2025/07/02 |
同様の手順でビルドできることを確認しました。 openssl-3.5.1 (LTS) ただし、下記の対処は必要 ・70-test_quic_multistream.t openssl-3.4.2 ただし、下記の対処は必要 ・70-test_quic_multistream.t ・70-test_quic_tserver.t openssl-3.3.4 ただし、下記の対処は必要 ・70-test_quic_multistream.t ・70-test_quic_tserver.t openssl-3.2.5 ただし、下記の対処は必要 ・70-test_quic_multistream.t ・70-test_quic_tserver.t openssl-3.0.17 (LTS) ただし、下記の対処は必要 ・70-test_quic_multistream.t |
対処方法 一覧
| |
2025/04/09 | openssl-3.5.0 (最新) でも同様の手順でビルドできることを確認しました。 ただし、下記テストで失敗。時間があるときに調査予定 70-test_quic_multistream.t 70-test_quic_tserver.t |
3.1シリーズ サポート終了による更新 | |
2025/02/14 | Windows 11 24H2において、 "nmake test" 中に、OSが落ちる 現象が、まだ直りません。 (ブルースクリーン, Blue Screen of Death, BSoD, OS Crash) そこで、回避方法 ですが、"nmake test" 実施前に、 下記のファイルを、一時的に拡張子を変更すれば、回避できます。 test/recipes/70-test_sslrecords.t を test/recipes/70-test_sslrecords.t.bak に変えるとか |
openssl-3.4.1 (最新) でも同様の手順でビルドできることを確認しました。 | |
openssl-3.3.3 でも同様の手順でビルドできることを確認しました。 | |
openssl-3.2.4 でも同様の手順でビルドできることを確認しました。 | |
openssl-3.1.8 でも同様の手順でビルドできることを確認しました。 | |
openssl-3.0.16 (LTS) でも同様の手順でビルドできることを確認しました。 | |
2024/10/29 | openssl-3.4.0 (最新) でも同様の手順でビルドできることを確認しました。 |
Windows 11 24H2において、 "nmake test" 中に、OSが落ちる現象がありました。 "nmake" および "nmake install" は問題ありません。 23H2の環境では、問題ありませんでした。 |
|
2024/09/27 | アンチウイルスソフトにより、テストが失敗する場合があります。 対策により、テストが成功するようになります。詳細は、こちら。 |
openssl-3.4.0 (最新) でも同様の手順でビルドできることを確認しました。 | |
openssl-3.2.3 でも同様の手順でビルドできることを確認しました。 | |
openssl-3.1.7 でも同様の手順でビルドできることを確認しました。 | |
openssl-3.0.15 (LTS) でも同様の手順でビルドできることを確認しました。 | |
2024/07/30 | openssl-3.3.1 (最新) でも同様の手順でビルドできることを確認しました。 |
openssl-3.2.2 でも同様の手順でビルドできることを確認しました。 | |
openssl-3.1シリーズ で、ビルドが失敗する場合があります。 対策により、ビルドが成功するようになります。詳細は、こちら。 この対策により、openssl-3.1.6 でも同様の手順でビルドできることを確認しました。 |
|
openssl-3.0.14 (LTS) でも同様の手順でビルドできることを確認しました。 | |
2024/04/06 | openssl-3.2.1 (最新) でも同様の手順でビルドできることを確認しました。 |
openssl-3.2.xにおいて、ユニバーサル CRT に依存するOpenSSLを作成する場合を追記 | |
openssl-3.1.5 でも同様の手順でビルドできることを確認しました。 | |
openssl-3.0.13 (LTS) でも同様の手順でビルドできることを確認しました。 |
OpenSSLのライブラリーを使用したいため、調べてみました。
1.「Shining Light Productions」のサイトからインストールする方法
http://slproweb.com/products/Win32OpenSSL.html
2.本家、「OpenSSL」のサイトから、ソースコードをダウンロードしてビルドする方法
https://www.openssl.org/
今回は、2.のソースコードをダウンロードしてビルドする方法について記載いたします。
ビルド方法
1.OpenSSLからソースコードをダウンロードする
下記URLを開くと、
https://www.openssl.org/source/
下記のような画面が表示されます。

3.5シリーズ | 2030/04/08までサポート | 長期サポート(LTS) |
3.4シリーズ | 2026/10/22までサポート | 最新の安定バージョン |
3.3シリーズ | 2026/04/09までサポート | |
3.2シリーズ | 2025/11/23までサポート | |
3.1シリーズ | サポート終了 | |
3.0シリーズ | 2026/09/07までサポート | 長期サポート(LTS) |
2.OpenSSLのソースコードを解凍する
解凍ツールはお好きなツールを使ってください。
私は「Git Bash」を開いて、下記のtarコマンドで解凍しました。
tar -zxvf openssl-3.5.0.tar.gz (下図は、openssl-3.0.5.tar.gz となっています)

3.ビルドの要件を確認する
解凍したファイルの中から、「NOTES-WINDOWS.md」ファイルを開きます。

いくつかビルドする方法はあるようですが、
今回は、Visual C++を使ったネイティブビルドで行いたいと思います。
なぜなら、Visual C++にて、OpenSSLのライブラリーを使用したいからです。
要件としては、
・Perl (Strawberry Perl が推奨とのこと)
・Microsoft Visual C compiler
・Netwide Assembler (NASM)
となっております。
4.要件に必要なものをダウンロードする
・「Strawberry Perl」をダウンロード
下記URLを開くと、
https://strawberryperl.com/
下記のような画面が表示されます。

64bit版と、32bit版がありますので、
自分の環境にあった方をクリックし、ダウンロードします。
私の環境は64bit版ですので、strawberry-perl-5.40.0.1-64bit.msi をダウンロードしました。
・「Microsoft Visual C compiler」をダウンロード
「NOTES-WINDOWS.md」ファイルにも、
可能な限り最新のバージョンを使用するように記載されていますので、
インストールされていない方は、2022をお勧めします。
https://visualstudio.microsoft.com/ja/vs/
上記からインストーラーをダウンロードします。
・「Netwide Assembler (NASM)」をダウンロード
下記URLを開くと、
https://www.nasm.us
下記のような画面が表示されます。

最新版のStableをクリックします。 (上図では、2.16.03 の部分)
下図のような画面が表示されましたら、
32bit版と、64bit版がありますので、
自分の環境にあった方をクリックします。

私の環境は64bitですので、下記のような画面が表示されました。
インストーラーをクリックし、ダウンロードします。
(下図では、nasm-2.16.03-installer-x64.exe の部分です。)

5.ダウンロードしたファイルをインストールする
・「Strawberry Perl」をインストール
特に迷うことがないと思いますので、省略します。
・「Visual Studio 2022」をインストール
私の環境では、Visual Studio 2022がインストールされておりますので、
詳細な説明は省略させていただきます。
インストーラーを実行すると
下記のような画面が表示される場面が出てくると思います。
そうしましたら、「C++によるデスクトップ開発」のチェックを入れれば
おそらく今回の目的に合ったものがインストールされると思います。

・「Netwide Assembler (NASM)」をインストール
システム全体で使用する場合には、「管理者として実行」で起動してください。
自分のみしか使用しない場合には、普通に起動してください。
普通に起動した場合には、下図のような画面が表示されますが、
[OK]ボタンを押して進めてください。

そのほかは、特に迷うことがないと思いますので、省略します。
6.環境変数 %PATH% にPerlとNASMのパスを追加する
[Windows]+[Pause]ボタンで、[システム > バージョン情報]が起動します。
[システムの詳細設定]をクリックし、[システムのプロパティ]ダイアログを起動します。

[環境変数...]ボタンを押して、[環境変数]ダイアログを起動します。

・「Strawberry Perl」のパス
インストーラーが[システム環境変数]の[Path]に追加してくれています。
(下図の選択されている行から3行分)

・「Netwide Assembler (NASM)」のパス
NASMをシステム全体で使用するようにインストールした場合
[システム環境変数]の[Path]を選択し、[編集...]ボタンを押します。

[新規(N)]ボタンを押し、NASMのパスを追加します。
C:\\Program Files\\NASM
[OK]ボタンを押していき、開いた画面を閉じます。
・「Netwide Assembler (NASM)」のパス
NASMを自分のみ使用するようにインストールした場合
[自分のユーザー環境変数]の[Path]を選択し、[編集...]ボタンを押します。

[新規(N)]ボタンを押し、NASMのパスを追加します。
C:\\Users\\自分のユーザー名\\AppData\\Local\\bin\\NASM
[OK]ボタンを押していき、開いた画面を閉じます。
7.ビルドする
スタートメニューから、自分の環境にあった
Visual Studio Developer Command Promptを
「管理者として実行」で開きます。
64bitの場合は「x64 Native Tools Command Prompt for VS 2022」を、
32bitの場合は「x86 Native Tools Command Prompt for VS 2022」を選択します。

「x64 Native Tools Command Prompt for VS 2022」を選択した場合、
下図のような画面が表示されます。

解凍したOpenSSLのソースコードのルートフォルダーに移動します。
私の環境では、下記に移動しています。
cd C:\\Users\\murui_no_neko_zuki\\Downloads\\openssl-3.5.0 |

下記のコマンドで、ビルドの設定を行います。
64bitの場合、
perl Configure VC-WIN64A |
perl Configure VC-WIN32 |
perl Configure VC-WIN64A-HYBRIDCRT |
perl Configure VC-WIN32-HYBRIDCRT |

下記のコマンドで、ビルドを行います。
nmake |

プロンプトが表示されるまで、しばらく待ちます。
下記のコマンドで、テストを行います。
nmake test |

skipped されているものもあると思いますが、
現在のプラットフォームでサポートしていなかったりしますので、
最後に Result: PASS と表示されていれば問題ないかと思われます。
下記のコマンドで、インストールを行います。
nmake install |

インストール先は、デフォルトで下記になります。
VC-WIN64Aの場合、
cd %ProgramW6432%\\OpenSSL |
cd %ProgramFiles(x86)%\\OpenSSL |

念のため、下記のコマンドを実行して確認します。
cd bin openssl.exe --help |

8.環境変数 %PATH% にOpenSSLのパスを追加する
[Windows]+[Pause]ボタンで、[システム > バージョン情報]が起動します。
[システムの詳細設定]をクリックし、[システムのプロパティ]ダイアログを起動します。

[環境変数...]ボタンを押して、[環境変数]ダイアログを起動します。

[システム環境変数]の[Path]を選択し、[編集...]ボタンを押します。

[新規(N)]ボタンを押し、Strawberry Perlのパスの上に、
OpenSSLのパスを追加します。
C:\\Program Files\\OpenSSL\\bin
(Strawberry Perlにも、OpenSSLが含まれているので、それよりも上に追加必要)
以上になります。
追記
A.openssl-3.1シリーズで、ビルドが失敗する場合の対策
test\\build_wincrypt_test.c(25): fatal error C1021: プリプロセッサ コマンド 'warning' が無効です。 NMAKE : fatal error U1077: '"cl" /Zi /Fdapp.pdb /Gs0 /GF /Gy /MD /W3 /wd4090 /nologo /O2 -I"include" -D"OPENSSL_BUILDING_OPENSSL" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG" -c /Fotest\\build_wincrypt_test-bin-build_wincrypt_test.obj "test\\build_wincrypt_test.c"' : リターン コード '0x2' Stop. NMAKE : fatal error U1077: '"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\nmake.exe" / _build_sw' : リターン コード '0x2' Stop. |
openssl-3.1.x\\test\\build_wincrypt_test.c の 25行目を
# warning "wincrypt.h no longer defining X509_NAME before OpenSSL headers" |
# ifdef _MSC_VER # pragma message("wincrypt.h no longer defining X509_NAME before OpenSSL headers") # else # warning "wincrypt.h no longer defining X509_NAME before OpenSSL headers" # endif |
なお、3.2シリーズ以降は、この対策がすでに実施されております。

B.アンチウイルスソフトにより、テストが失敗する場合の対策
ESET Internet Securityを例に説明いたします。
アプリの設定画面を開き、ネットワークに関する設定を選択します。
(ここでは、左ペインで[設定]を選択し、右ペインで[ネットワーク保護]を選択します。)

本来は、ブロックされた通信だけを許可すべきところですが、
テスト項目が変更されるごとに、対策しなければならないので、
OpenSSLをテストしている最中だけ、
[ファイアウォール]と[ネットワーク攻撃保護]を無効にし、
テストが終了したら、有効に戻す方法をとります。
一時的でも、セキュリティが心配だからという方は、
個別にブロックされた通信だけを許可してくださいね。

コメント