Windows 使用makecert.exe创建自签名CA证书

Windows 使用makecert.exe创建自签名CA证书,windows,ssl,ssl-certificate,makecert,Windows,Ssl,Ssl Certificate,Makecert,我正在尝试在32位Windows 7(虚拟)上创建自签名CA证书。 makecert是v7.1,位于C:\Program Files\Microsoft SDK\Windows\v7.1\Bin>中 每当我尝试执行此命令(提升) …系统会提示我输入密码,但当我确认密码时,我会得到: 错误:CryptCertStrToNameW失败=>0x80092023(-2146885597)失败 任何帮助都将不胜感激 尊敬。我将您的命令复制到命令提示符中,并得到了相同的错误。然而,我重新输入了命令,它成功了

我正在尝试在32位Windows 7(虚拟)上创建自签名CA证书。 makecert是v7.1,位于
C:\Program Files\Microsoft SDK\Windows\v7.1\Bin>

每当我尝试执行此命令(提升)

…系统会提示我输入密码,但当我确认密码时,我会得到:

错误:CryptCertStrToNameW失败=>0x80092023(-2146885597)失败

任何帮助都将不胜感激


尊敬。

我将您的命令复制到命令提示符中,并得到了相同的错误。然而,我重新输入了命令,它成功了。我怀疑name参数“CN=MyCert CA”中的一个字符是一个特殊字符,可能是从字处理器复制的。

这是一个老问题,但似乎您使用的是字处理器“智能引号”而不是ASCII双引号

因此问题不在于
makecert
,而在于如何输入命令。windows命令shell,
cmd.exe
,没有将
“CN=MyCert CA”
视为引用词。相反,它看到了两个裸词,
“CN=MyCert
CA”
,其中“智能引号”是该词的一部分

  • ASCII双引号“
    的代码点为U+0022(在C或C中又称“\x22”)
  • 左边的双“智能”引号“
    的代码点为U+201C(在C#中又称“\u201C”)
  • 右边的双“智能”引号,
    的代码点为U+201D(在C#中又称“\u201D”)

因此会出现错误。

如果名称中没有CN=,也会出现相同的错误


例如,我在
-n“我的名字”
中出现此错误,但在
-n“CN=My Name”

中成功地复制了记事本中的文本。但我尝试了CA的几个不同名称(包括不带空格),但没有帮助。重写整个命令就成功了。对于那些发现自己在这里的人,比如我——如果你从网站复制粘贴,你可能会得到unicody卷曲引号(比如OP——检查CN周围的引号),而不是正确的ascii版本:
makecert.exe -r -n “CN=MyCert CA” -pe -sv MyCert.pvk -a sha1 -len 2048
             -b 09/04/2012 -e 09/04/2018 -cy authority MyCert.cer