在 Windows 上使用开放 ssl 创建自签名证书

Posted

技术标签:

【中文标题】在 Windows 上使用开放 ssl 创建自签名证书【英文标题】:creating self-signed certificates with open ssl on windows 【发布时间】:2017-01-09 07:21:07 【问题描述】:

我正在关注these guidelines 使用 OpenSSL 生成自签名证书。

我在Windows 10下,我的工作目录如下:

PS E:\Certificats\predix\root\ca> ls


    Directory: E:\Certificats\predix\root\ca


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         9/1/2016  11:57 AM                certs
d-----         9/1/2016  11:55 AM                crl
d-----         9/1/2016  12:00 PM                intermediate
d-----         9/1/2016  11:55 AM                newcerts
d-----         9/1/2016  11:56 AM                private
-a----         9/1/2016  11:55 AM              2 index.txt
-a----         9/1/2016  11:56 AM           4306 openssl.cnf
-a----         9/1/2016  11:55 AM             14 serial

在指南中的几个步骤之后,当我键入时

openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 3650 -notext -md s

我收到以下错误

Using configuration from openssl.cnf
Enter pass phrase for ./private/ca.key.pem:
unable to load number from ./serial
error while loading serial number
12944:error:0D066096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:.\crypto\asn1\f_int.c:212:
PS E:\Certificats\predix\root\ca> openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 3650 -notext -md sha256 -in intermediate/csr/intermediate.csr.pem  -out intermediate/certs/intermediate.cert.pem
Using configuration from openssl.cnf

告诉我读取串行文件时出现问题。

连载内容是

1000

有没有人可以解决这个问题?该文件存在且其在conf文件中的路径名是正确的...

【问题讨论】:

Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops? 【参考方案1】:

自己解决了这个问题:我使用

创建了串行文件
echo 00 > serial

它生成了一个 Unicode 文件,而 openssl 期待一个 ANSI 文件。

【讨论】:

【参考方案2】:

对于在应用以下建议的答案后仍然收到错误的其他人:

PS> echo 00 > serial
unable to load number from ./serial
error while loading serial number
29488:error:0D066096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:crypto\asn1\f_int.c:140:

我可以通过在Git Bash 终端中运行相同的命令来解决此问题。这会将文件放置在适合 openssl 的格式中。

【讨论】:

【参考方案3】:

我也很惊讶,但 PowerShell 默认写入 UTF-16 文件。更多详情here.

OpenSSL 不能识别 UTF-16 和 UTF-8 BOM。

因此,您可以使用Out-File 代替echo 00 > serial 来编写纯ASCII 文件:

"00" | Out-File -encoding ascii -NoNewline "serial"

【讨论】:

以上是关于在 Windows 上使用开放 ssl 创建自签名证书的主要内容,如果未能解决你的问题,请参考以下文章

Jetty v8.x - 如何为HTTPS配置/启用SSL以及创建Windows服务的步骤

如何创建用于 Tomcat 的自签名 SSL 证书?

iOS适配HTTPS,创建一个自签名的SSL证书(x509)具体步骤

[转]如何创建一个自签名的SSL证书(X509)

为啥我无法获得与 Wamp 2.4.4 一起使用的自签名证书 (ssl)?

❖ 自签名 SSL 证书(self-signed SSL certificate)