我正在开发一个 API 服务器,它将从用户那里获取以下信息
"CN=ABC123,O=DEF,L=XYZ,S=CA,C=US,E=info@abc.com"
并使用我们的根证书创建一个签名的开发者证书。为了使用我制作证书,makecert.exe
我遵循使用 makecert.exe 创建自签名证书进行开发教程并使用以下命令创建根证书
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
现在根据文档,上面的命令中没有给出任何-po
参数,因此它在提示中要求输入密码,这是一个问题
因为这是一个 API,所以无法在私钥提示中输入密码
另一种选择是使用但不确定如何使用它们,任何帮助都会很X509Certificate2
明显bouncyCastle
我想让它尽可能简单,这就是我选择的makecert.exe
原因Process.Start()