更新日 更新内容
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

対処方法 一覧
  • 70-test_sslrecords.t
    OSが落ちる 現象は起きなくなりました

    ただし、アンチウイルスソフトにより、
    テストが失敗する場合があります。
    対策により、テストが成功するようになります。
    詳細は、こちら

  • 70-test_quic_multistream.t
    https://github.com/openssl/openssl/issues/24521
    2025/07/02 現在 Open

    マルチストリームテストはかなり時間に敏感で、
    Windows ASANビルドでは実行が遅すぎる可能性があるため、
    失敗するようです

    回避方法
    nmake test を実施する前に、
    test/recipes/70-test_quic_multistream.t

    test/recipes/70-test_quic_multistream.t.bak
    に変えるなどして、テストをスキップしてください。

  • 70-test_quic_tserver.t
    https://github.com/openssl/openssl/issues/24561
    2025/07/02 現在 Close

    テスト通りました。ただし、3.5系だけ

    回避方法
    nmake test を実施する前に、
    test/recipes/70-test_quic_tserver.t

    test/recipes/70-test_quic_tserver.t.bak
    に変えるなどして、テストをスキップしてください。
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/
下記のような画面が表示されます。
OpenSSL-1
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)
ということで、画面上の openssl-3.5.0.tar.gz のリンクをクリックし、ダウンロードします。

2.OpenSSLのソースコードを解凍する
解凍ツールはお好きなツールを使ってください。
私は「Git Bash」を開いて、下記のtarコマンドで解凍しました。
 tar -zxvf openssl-3.5.0.tar.gz (下図は、openssl-3.0.5.tar.gz となっています)
OpenSSL-2

3.ビルドの要件を確認する
解凍したファイルの中から、「NOTES-WINDOWS.md」ファイルを開きます。
OpenSSL-3
いくつかビルドする方法はあるようですが、
今回は、Visual C++を使ったネイティブビルドで行いたいと思います。
なぜなら、Visual C++にて、OpenSSLのライブラリーを使用したいからです。

要件としては、
・Perl (Strawberry Perl が推奨とのこと)
・Microsoft Visual C compiler
・Netwide Assembler (NASM)
となっております。

4.要件に必要なものをダウンロードする
・「Strawberry Perl」をダウンロード
下記URLを開くと、
https://strawberryperl.com/
下記のような画面が表示されます。
OpenSSL-4
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
下記のような画面が表示されます。
OpenSSL-6
最新版のStableをクリックします。 (上図では、2.16.03 の部分)

下図のような画面が表示されましたら、
32bit版と、64bit版がありますので、
自分の環境にあった方をクリックします。
OpenSSL-7

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

5.ダウンロードしたファイルをインストールする
・「Strawberry Perl」をインストール
特に迷うことがないと思いますので、省略します。

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

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

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

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

・「Netwide Assembler (NASM)」のパス
NASMをシステム全体で使用するようにインストールした場合

[システム環境変数]の[Path]を選択し、[編集...]ボタンを押します。
環境変数3
[新規(N)]ボタンを押し、NASMのパスを追加します。
C:\\Program Files\\NASM

[OK]ボタンを押していき、開いた画面を閉じます。

・「Netwide Assembler (NASM)」のパス
NASMを自分のみ使用するようにインストールした場合

[自分のユーザー環境変数]の[Path]を選択し、[編集...]ボタンを押します。
環境変数4
[新規(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」を選択します。
OpenSSL-A

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

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

下記のコマンドで、ビルドの設定を行います。
64bitの場合、
perl Configure VC-WIN64A
32bitの場合、
perl Configure VC-WIN32
ユニバーサル CRT に依存する64bitの場合(openssl-3.2.x)、
perl Configure VC-WIN64A-HYBRIDCRT
ユニバーサル CRT に依存する32bitの場合(openssl-3.2.x)、
perl Configure VC-WIN32-HYBRIDCRT
Windows on Armの場合(openssl-3.2.x)、「NOTES-WINDOWS.md」ファイル確認
OpenSSL-D

下記のコマンドで、ビルドを行います。
nmake
OpenSSL-E
プロンプトが表示されるまで、しばらく待ちます。

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

下記のコマンドで、インストールを行います。
nmake install
OpenSSL-G

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

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

8.環境変数 %PATH% にOpenSSLのパスを追加する
[Windows]+[Pause]ボタンで、[システム > バージョン情報]が起動します。
[システムの詳細設定]をクリックし、[システムのプロパティ]ダイアログを起動します。
システムのプロパティ
[環境変数...]ボタンを押して、[環境変数]ダイアログを起動します。
環境変数6
[システム環境変数]の[Path]を選択し、[編集...]ボタンを押します。
環境変数5
[新規(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シリーズ以降は、この対策がすでに実施されております。
3.1.7_NG修正








B.アンチウイルスソフトにより、テストが失敗する場合の対策

ESET Internet Securityを例に説明いたします。

アプリの設定画面を開き、ネットワークに関する設定を選択します。
(ここでは、左ペインで[設定]を選択し、右ペインで[ネットワーク保護]を選択します。)
ESET-Settings-1

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

ESET-Settings-2