在Windows上使用OpenSSL创建自签名证书

14

我正在遵循这些指南使用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

有人有这个问题的解决方法吗?该文件存在,且在配置文件中的路径是正确的...


Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问什么样的问题。也许超级用户或者Unix&Linux Stack Exchange更适合提问。还可参见我该在哪里发布DevOps相关的问题? - jww
3个回答

18

我自己解决了这个问题:我使用以下方法创建了串行文件

echo 00 > serial

在 OpenSSL 期望一个 ANSI 文件时,它产生了一个 Unicode 文件。


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的格式中。


0

这对我来说也是个惊喜,但是PowerShell默认会写入UTF-16文件。更多细节在这里

OpenSSL不认识UTF-16以及UTF-8 BOM。

所以,你可以使用Out-File来写入一个纯ASCII文件,而不是echo 00 > serial

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

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