如何在Windows 10中安装OpenSSL?

461

我有一个关于在Windows上安装OpenSSL版本以后如何创建证书的问题。 我安装了一个版本(openssl-1.0.2d-fips-2.0.10)从SourceForge下载,但它无法正确生成文件。 也有官方网站https://www.openssl.org,但我不知道如何安装和配置,以便在生成密钥和.pem文件时能够正常工作。 我尝试设置一些环境变量指向我解压下载文件的文件夹,但不确定是否正确。


1
“但它不能正确生成文件”是什么意思?哪些文件?我不认为官方网站公开(Win)二进制文件。总有可能从源代码构建它 :d。我记得我曾经能够在我的旧笔记本电脑上安装和使用下载的二进制文件。现在我使用自己构建的定制版本(OpenSSL 1.0.2j-fips 26 Sep 2016)。 - CristiFati
6
好的,以下是对https://wiki.openssl.org/index.php/Binaries的翻译:

OpenSSL二进制文件

在此页面上,您可以找到各种操作系统和体系结构上的预编译OpenSSL二进制文件。这些二进制文件已经编译并准备好供使用。我们建议您使用最新版本的OpenSSL,以使您的应用程序受益于最新的安全更新和错误修复。请注意,这些二进制文件仅包含核心OpenSSL库。如果您需要特定于操作系统或其他库的功能,请考虑从源代码构建OpenSSL。如果您希望为某个特定平台或发行版创建二进制文件,并且认为它们可能对其他人有用,请考虑将其上传到此处。 确保您包括所有必要的库和依赖项,并遵循适当的许可证条款。谨记,这些预编译的二进制文件可能不适用于所有系统配置。务必在使用之前进行测试并确保其适合您的需求。
- CristiFati
1
无论哪个适合你最好,如果对你来说没有区别,那就从第一个开始。 - CristiFati
1
正如我之前告诉你的,我是一名诺贝尔学生,所以在我看来,我的意见并不重要,更重要的是我的电脑需要什么。问题是,在本地主机环境中使用什么选项最合适,node.js? - gemita
17个回答

1196
我也想为Windows 10创建OPEN SSL。一种简单的方法是使用Git for Windows安装中内置的openssl.exe,避免从第三方网站安装未知软件并使计算机易受病毒攻击的风险。在我的情况下,我在 Git for Windows 安装的以下位置找到了 OPEN SSL。 C:\Program Files\Git\usr\bin\openssl.exe 如果您还需要有关如何使用 OPENSSL 生成和使用证书的说明,请查看我的博客文章。这篇逐步说明的文章首先解释了如何使用Microsoft Windows默认工具以及OPENSSL,并解释了它们之间的区别。 https://kaushikghosh12.blogspot.com/2016/08/self-signed-certificates-with-microsoft.html

74
如果你已经安装了Git,那么最简单最快的方法是直接在Git Bash中输入以下命令:openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem。这样可以省去一些步骤,而且很方便。 - Olfredos6
21
对于某些命令,你可能需要使用“-config”标志来指定配置文件的位置。我的配置文件位于 C:\Program Files\Git\usr\ssl\openssl.cnf - Millie Smith
13
比起点赞,你应该得到一场起立鼓掌的表彰!非常感谢。 - Rodrigo
24
如果你有Windows版的Git,可以在终端中输入"bash",然后就可以使用"openssl"命令了。 - Ali Karaca
6
在Windows搜索栏中键入"Git",即可获取所有相关列表。然后单击"Git Bash",进入bash shell界面。 - Kartik Javali
显示剩余12条评论

177
如果你已经安装了 chocolatey,你可以通过一个命令来安装 openssl
choco install openssl

6
我做了相同的事情,但是使用了提升的权限,这意味着在Windows中使用管理员模式打开CMD命令行。 - pauldx

93
如果您已经安装了Git,您可以打开Git Bash(在文件夹中按住Shift并右键单击-> Git Bash Here),然后在Bash中直接使用openssl命令。

1
或者,如果您没有安装Shell扩展程序,可以从“开始”菜单中运行Git Bash - Hugh W
然而,在使用Git bash时,要小心在参数中使用斜杠,例如在openssl的"-subj"中:https://stackoverflow.com/questions/31506158/running-openssl-from-a-bash-script-on-windows-subject-does-not-start-with - undefined

76

您已经安装了Git吗?
您可以在Git Bash中访问openssl命令,而不需要添加任何环境变量。

但是,如果您想从Windows cmd访问openssl 命令,则请按照以下步骤:

  1. 找到Git的bin目录的路径。通常位于

C:\Program Files\Git\usr\bin\

  1. 然后将此路径添加到您的环境变量(用户变量 -> Path)中:

  2. enter image description here

  1. 现在打开一个新的命令提示符(不要使用已经打开的cmd,因为已经打开的cmd不知道新的环境变量)。

现在输入:

openssl


我猜在末尾不要忘记添加反斜杠(\)也很重要。在我添加了末尾的反斜杠(\)之后,它开始正常工作了。 - undefined

18

要么将Git中存在的openssl设置为您的默认openssl,并将其包含在环境变量的路径中(快速方式)

要么:

  1. 从此 链接安装特定于系统的openssl。
  2. 设置以下变量:set OPENSSL_CONF=LOCATION_OF_SSL_INSTALL\bin\openssl.cfg
  3. 更新路径: set Path=...其他值;LOCATION_OF_SSL_INSTALL\bin

迄今为止最好的答案帮助了我。 - Bellash

16

虽然这是个“死帖”,但对其他人可能有用:

注意:当拥有一个功能性的OpenSSL实例(使用上述任何方法),以下是如何在VStudio中使用它(如果您需要将其用于自己的项目):[SO]: 如何在Visual Studio中包含OpenSSL(@CristiFati的答案)


你的第一个链接并没有什么"官方"的东西,只是把列表编译在一起。那里列出的所有下载都是 OpenSSL 的第三方编译版本,因此不是官方版本。该网站甚至自己声明: "使用这些基于 OpenSSL 的产品存在风险,请自行承担; 这些产品未经 OpenSSL 项目的评估或测试。" - sigy
1
@sigy:这个页面是由OpenSSL团队编写的,因此它是官方的(这就是我的说法)。它是否包含指向非官方构建/页面的指针是另一回事。但是,是的,我应该在那里添加一个注释。 - CristiFati

8
如果您正在运行 Windows 10 1709(版本号为16299)或更高版本,则可以使用以下 winget 命令来安装 OpenSSL。
winget install -e --id ShiningLight.OpenSSL

如果你的系统中已经安装了Git for Windows,你也可以在Git文件目录中找到OpenSSL。

C:\Program Files\Git\usr\bin\openssl.exe

更多细节请查看此指南:在Windows上安装OpenSSL的三种方法


7
以下是一个解决方案,对于已经实施了WSL(Windows Subsystem for Linux)的人来说可能会很高兴。您只需使用:
wsl openssl ...whatever_args...
重点是许多已经实施WSL的人可能没有意识到他们可以从DOS或powershell命令行直接调用其底层WSL linux vm中的任何Linux命令。 (很容易陷入认为WSL的重点是要用它来“shell into the vm”,这确实是一个选项,但从Windows运行Linux命令的能力是WSL的真正增值之处。)
并且要清楚,在像上面那样执行命令时,您指向(或创建)的任何文件名或文件夹都将相对于您运行命令的 Windows 文件夹。因此,例如执行openssl req以创建自签名证书,其中您可以命名-keyout selfsigned.key -out selfsigned.crt,则这两个文件将在您运行命令的 Windows 文件夹中创建。
话虽如此,对于某些openssl命令示例可能会出现问题,例如如果他们尝试使用各种特定于bash的参数,则可能会失败,在这种情况下,“shelling into wsl”运行命令可能是更好的选择。您仍然可以将事物定向到主机上找到或放置,但我不想让这个答案过于关注此类WSL方面。我只是想提出另一种替代安装openssl的选择。

我再补充一个提示:如果你想在openssl命令中使用localhost(例如获取在主机上实现的证书),请注意,通过wsl openssl命令访问的虚拟机内的localhost不会解析到主机。要获取主机的IP地址,可以使用wsl ip route,然后将该IP用于替换localhost。 - charlie arehart
只有上帝知道为什么这个被标记了。我不知道你能做到这一点。 - Richard
谢谢,理查德。有些人不喜欢WSL,或者可能他们不喜欢我提到的一个负面点。无论如何,如果他们能够表态让我们知道就好了。与此同时,如果你喜欢它,可以投一票支持一下。目前为止,他们是唯一的一票(根据活动历史记录显示)。顺便说一句,无论票数如何,我都会坚持我所分享的观点。 :-) - charlie arehart
WSL是微软20年来做的最好的事情。带有WSL的Windows是非常特别的东西。 - Richard

6

我最近需要记录如何安装它的版本,所以我将我的步骤复制到这里,因为其他答案使用的是与我推荐的不同来源,即Cygwin。我喜欢Cygwin,因为它得到了很好的维护,并为Windows提供了大量其他实用程序。 Cygwin还允许您在需要时轻松更新版本,以修复漏洞。 请经常更新您的OpenSSL版本!

打开Windows命令提示符并输入以下命令检查是否安装了OpenSSL:openssl version

如果出现“未识别命令”的错误消息,则通过参考Cygwin进行安装:

基本上,下载并运行Cygwin Windows设置应用程序以安装和更新必要的OpenSSL应用程序:

  1. 选择安装目录,例如C:\ cygwin64。选择下载镜像,例如:http://mirror.cs.vt.edu
  2. 输入openssl进行搜索并选择它。您也可以此时选择/取消选择其他感兴趣的项目。然后点击下一步两次,最后点击完成.
  3. 安装后,需要编辑PATH变量。在Windows上,您可以通过按Windows键+暂停来访问系统控制中心。在“系统”窗口中,单击“高级系统设置”→“高级”(选项卡)→“环境变量”。对于Windows 10,快速访问方法是在Windows的开始搜索中输入“编辑系统环境变量”,然后单击“环境变量”按钮。更改PATH变量(双击它或选择并编辑),并添加Cygwin所在的路径,例如C:\ cygwin \ bin。
  4. 通过新建命令提示符窗口验证是否已安装:openssl version。例如:C:\ Program Files \ mosquitto> openssl version OpenSSL 1.1.1f 31 Mar 2020

5

打开你的

Git Bash

enter image description here

如有需要,请转到您的目录。

运行您的命令。例如:

openssl 

1
谢谢!!!...对于没有安装git的人来说,这是一个可怕的答案,但它确实帮助了我。 - Eliezer Berlin

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