如何在 Windows 10/11 上从源码安装 OpenSSL?

4

我目前使用的是Windows 11,但我认为在Windows 10上的步骤应该是相同的。

我已经到处搜索了,没有一个教程能够成功地展示如何在Windows上安装OpenSSL。

这个网站上的所有答案都只是一些变通方法,例如使用Git版本。我特别使用XAMPP中的OpenSSL,但那不是我想要的。

我想要能够从源代码安装OpenSSL。此外,当前Git和XAMPP安装的是OpenSSL 1.1.1版本,而我想要的是OpenSSL 3。

我已经尝试了所有方法,但OpenSSL的说明缺乏信息。它们只是给出一些提示,然后是三个点(...),比如(./Configure...)。

这就是我正在尝试跟随的步骤:

https://github.com/openssl/openssl/blob/master/NOTES-WINDOWS.md#native-builds-using-mingw

对于这个例子,我选择了MinGW方法(但是,如果您能够成功地通过其他方法安装它,那也可以,我也会这样做):
我在Windows上安装了MSYS32和Perl,但是在MinGW部分卡住了,我已经在MSYS32上安装了MinGW - 我只是安装了工具链中的所有软件包:
$ pacman -S mingw-w64-ucrt-x86_64-toolchain
:: There are 19 members in group mingw-w64-ucrt-x86_64-toolchain:
:: Repository ucrt64
   1) mingw-w64-ucrt-x86_64-binutils  2) mingw-w64-ucrt-x86_64-crt-git
   3) mingw-w64-ucrt-x86_64-gcc  4) mingw-w64-ucrt-x86_64-gcc-ada
   5) mingw-w64-ucrt-x86_64-gcc-fortran  6) mingw-w64-ucrt-x86_64-gcc-libgfortran
   7) mingw-w64-ucrt-x86_64-gcc-libs  8) mingw-w64-ucrt-x86_64-gcc-objc
   9) mingw-w64-ucrt-x86_64-gdb  10) mingw-w64-ucrt-x86_64-gdb-multiarch
   11) mingw-w64-ucrt-x86_64-headers-git  12) mingw-w64-ucrt-x86_64-libgccjit
   13) mingw-w64-ucrt-x86_64-libmangle-git  14) mingw-w64-ucrt-x86_64-libwinpthread-git
   15) mingw-w64-ucrt-x86_64-make  16) mingw-w64-ucrt-x86_64-pkgconf
   17) mingw-w64-ucrt-x86_64-tools-git  18) mingw-w64-ucrt-x86_64-winpthreads-git
   19) mingw-w64-ucrt-x86_64-winstorecompat-git

然后,gcc 命令仍然无法使用。我相信这与我没有将其添加到 MSYS32 的 PATH 有关,但是没有说明如何执行此操作(而且即使安装了整个工具链,C:\msys64\mingw64\bin 也是空的!)

此外,他们后来说:

除此之外,请按照 INSTALL.md 中的 Unix / Linux 说明进行操作。

太棒了,所以我去看 INSTALL.md,但那里只有另一个提示:

$ ./Configure
$ make
$ make test

为什么在Windows上构建和安装OpenSSL如此复杂?我想要官方源码,而不是通过Git或XAMPP或未知的第三方解决方法(他们为什么不提供.exe?)
希望这篇文章能成为未来任何想要在Windows上安装OpenSSL并获得完整指令的人的参考。
谢谢。
2个回答

6

以管理员身份打开 命令提示符,然后输入 winget install openssl,然后按下 回车


这不是从源代码安装,而是下载二进制文件,你可以在他们的网站上找到:Microsoft对第三方软件包不负责任,也不授予任何许可证。正在下载https://slproweb.com/download/Win64OpenSSL-3_1_2.msi - undefined

4

我终于成功了,在 Windows 11 上安装了 OpenSSL 3.2.0-dev

以下是详细步骤,以便将来任何人都可以完成:

最终我使用了第一种方法,使用 C++,可以在这里查看:https://github.com/openssl/openssl/blob/master/NOTES-WINDOWS.md#quick-start

以下是说明,我尽可能详细地描述了它们,如果需要更改或修正,请告诉我:

第一步:安装必要的软件:

步骤 1:安装 Perl - 安装 Strawberry 版本,更容易安装并自动将其添加到 Windows 的 PATH 变量中。

步骤 2:安装 NASM,并将其添加到 Windows 系统(或您的用户)的 PATH 变量中。我最终只将其添加到我的用户变量 PATH 中:C:\Users\<username>\AppData\Local\bin\NASM

步骤3:安装Visual Studio(我使用的是Visual Studio Community 2022),并安装Desktop development with c++。最终我选择了以下软件包(我确定不是所有都必要,但如果您知道,请告诉我需要哪些软件包,以便我更新照片,避免安装过多的软件包): enter image description here

步骤4:下载并安装Visual Studio的构建工具(我假设将来此链接会更改,因此请查找适用于您的Visual Studio版本的构建工具安装链接):https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022

步骤5:安装构建工具后,启动Visual Studio安装程序。在安装程序中,您现在将看到构建工具。单击Visual Studio Build Tools下的“修改”:

enter image description here

然后安装所需的OpenSSL安装包,这将安装nmake

enter image description here

接下来是构建和安装步骤:

第六步:将openssl存储库克隆到PC上的某个文件夹中(我将其克隆到了C:/,因此最终得到了C:/openssl/),并通过运行以下命令修复行尾:

> git clone git://git.openssl.org/openssl.git

> cd openssl
> git config core.autocrlf false
> git config core.eol lf
> git checkout .

更新:如果您想要另一个版本,请克隆存储库而不检出,修复行末并然后检出所需版本。例如,如果您想要3.1.0稳定版(请注意 -n 标志以进行未检出操作):

> git clone -n git://git.openssl.org/openssl.git

> cd openssl
> git config core.autocrlf false
> git config core.eol lf
> git checkout openssl-3.1.0

步骤 7:在 Windows 搜索中,搜索“VS 2022 开发人员命令提示符”(或任何您的版本),并以管理员身份运行:

enter image description here

这将打开一个命令行窗口:

enter image description here

步骤8:您需要为要安装的OpenSSL版本设置正确的环境,否则构建将失败。在我的情况下,我想要为64位系统安装OpenSSL,请复制并粘贴以下内容(包括引号,并根据您的Visual Studio安装路径更改路径)

"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"

然后会设置环境,如下所示:

enter image description here

步骤9:从相同的开发者命令提示符中,cd进入您克隆openssl源代码的文件夹,例如我的情况是C:/openssl,然后按照OpenSSL指南中的步骤进行操作。
> perl Configure VC-WIN64A
> nmake
> nmake test
> nmake install

请注意,这些步骤需要时间,我大约花了20-30分钟完成这4个命令。
第10步:就是这样!已经安装好了!您可以在C:\openssl\apps找到OpenSSL可执行文件(openssl.exe)。 (如果需要,将其添加到Windows系统或用户的PATH变量中)
在我的情况下,当我运行openssl version时,我看到OpenSSL 3.2.0-dev (Library: OpenSSL 3.2.0-dev )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接