【发布时间】:2016-05-04 05:57:16
【问题描述】:
我正在开发一个 API 服务器,它将接收用户的输入以获取以下信息
"CN=ABC123,O=DEF,L=XYZ,S=CA,C=US,E=info@abc.com"
并使用我们的根证书创建签名的开发者证书。为了使用makecert.exe 制作证书,我遵循了Creating self signed certificates with makecert.exe for development 教程并使用以下命令创建了根证书
makecert.exe ^
-n "CN=CARoot" ^
-r ^
-pe ^
-a sha512 ^
-len 4096 ^
-cy authority ^
-sv CARoot.pvk ^
CARoot.cer
pvk2pfx.exe ^
-pvk CARoot.pvk ^
-spc CARoot.cer ^
-pfx CARoot.pfx ^
-po Test123
在命令提示符中,它会在提示弹出窗口中询问证书和 private.key 密码,这很好,因为这是一次性过程,我已经手动完成了
我用过的开发者证书在哪里
Process.Start("makecert.exe",certCmd);
certCmd 中的以下内容为string
makecert.exe ^
-n "CN=%1" ^
-iv CARoot.pvk ^
-ic CARoot.cer ^
-pe ^
-a sha512 ^
-len 4096 ^
-b 01/01/2014 ^
-e 01/01/2016 ^
-sky exchange ^
-eku 1.3.6.1.5.5.7.3.2 ^
-sv %1.pvk ^
%1.cer
pvk2pfx.exe ^
-pvk %1.pvk ^
-spc %1.cer ^
-pfx %1.pfx ^
-po Test123
现在根据documentation,上面的命令中没有给出-po参数,因此它在提示符中要求输入密码这是一个问题
由于这是一个 API,无法在私钥提示中输入密码
另一种选择是使用 X509Certificate2 和 bouncyCastle 但不确定如何使用它们,任何帮助都会很明显
我想让它尽可能简单,这就是我选择makecert.exe和Process.Start()的原因
【问题讨论】:
-
为什么不能在
stdin的makecert.exe中发送一个换行符?
标签: c# windows ssl x509certificate2 makecert