文章目录

在 MinGW 中使用 OpenSSL 创建证书申请文件时,存在一个识别 bug,以下面的命令为例

1
2
3
4
openssl req -new -newkey rsa:2048 -sha256 -nodes \
-out sample.com.csr \
-keyout sample.com.key \
-subj "/C=cn/ST=gd/L=city/O=Example/OU=Sample/CN=abc.com"

执行后报错

1
2
3
4
5
6
7
Generating a 2048 bit RSA private key
...............................................................................+++
................................................................................................................+++
writing new private key to 'sample.com.key'
-----
Subject does not start with '/'.
problems making Certificate Request

问题出在 MingW 身上,需要在 -subj 的参数前面加一个斜杠 /:

1
2
3
4
openssl req -new -newkey rsa:2048 -sha256 -nodes \
-out sample.com.csr \
-keyout sample.com.key \
-subj "//C=cn/ST=gd/L=city/O=Example/OU=Sample/CN=abc.com"

但是第一个 / 使得后面的 / 被认为是 NID 的一部分,这又会导致第一段主题信息被视为
/C=CountryShortName 而不是 C=CountryShortName

结果得到下面的错误:

1
2
3
4
5
6
Generating a 2048 bit RSA private key
.+++
................................................................................................................................................+++
writing new private key to 'sample.com.key'
-----
Subject Attribute /C has no known NID, skipped

为了解决这个问题,可以在 /C=CountryShortName,前面再加一段 /skip=yes

1
2
3
4
openssl req -new -newkey rsa:2048 -sha256 -nodes \
-out sample.com.csr \
-keyout sample.com.key \
-subj "//skip=yes/C=cn/ST=gd/L=city/O=Example/OU=Sample/CN=abc.com"

就保护了 C=CountryShortName 不被影响。

文章目录