2023/02/10 openssl-3.0.8 でも同様の手順でビルドできることを確認しました。


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.0シリーズで、2026/09/07までサポートと記載されています。
1.1.1は、2023/09/11までサポートと記載されており、もう少しでサポート切れになります。
ということで、画面上の openssl-3.0.5.tar.gz のリンクをクリックし、ダウンロードします。

2.OpenSSLのソースコードを解凍する
解凍ツールはお好きなツールを使ってください。
私は「Git Bash」を開いて、下記のtarコマンドで解凍しました。
 tar -zxvf 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.32.1.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.15.05 の部分)

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

私の環境は64bitですので、下記のような画面が表示されました。
インストーラーをクリックし、ダウンロードします。
(下図では、nasm-2.15.05-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.0.5
OpenSSL-C

下記のコマンドで、ビルドの設定を行います。
64bitの場合、
 perl Configure VC-WIN64A
32bitの場合、
 perl Configure VC-WIN32
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
 openssh.exe --help
OpenSSL-I

8.環境変数 %PATH% にOpenSSLのパスを追加する
[Windows]+[Pause]ボタンで、[システム > バージョン情報]が起動します。
[システムの詳細設定]をクリックし、[システムのプロパティ]ダイアログを起動します。
システムのプロパティ
[環境変数...]ボタンを押して、[環境変数]ダイアログを起動します。
環境変数6
[システム環境変数]の[Path]を選択し、[編集...]ボタンを押します。
環境変数5
[新規(N)]ボタンを押し、Strawberry Perlのパスの上に、
OpenSSLのパスを追加します。
C:\Program Files\OpenSSL\bin
(Strawberry Perlにも、OpenSSLが含まれているので、それよりも上に追加必要)

以上になります。