【发布时间】:2016-03-30 08:41:38
【问题描述】:
我正在尝试生成用于 ApplePay 的 CSR。我们将在服务器上运行它并随着时间的推移生成 1000 个。我更愿意在代码/内存中执行此操作,而不是直接运行 openssl 命令,因此私钥永远不会在 HHD 上。
我知道这些 openssl 命令有效。
openssl ecparam -out private.key -name prime256v1 -genkey
openssl req -new -sha256 -key private.key -nodes -out request.csr -subj '/O=Your Name or Company/C=US'
这是我的代码:
// generate the key with a specified curve,
X9ECParameters curve = NistNamedCurves.GetByName("P-256");
ECDomainParameters ecParam = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H, curve.GetSeed());
ECKeyPairGenerator keyGen = new ECKeyPairGenerator();
keyGen.Init(new ECKeyGenerationParameters(ecParam, new SecureRandom()));
AsymmetricCipherKeyPair keyPairServer = keyGen.GenerateKeyPair();
var p10builder = new Pkcs10CertificationRequest
(
"SHA256WITHECDSA",
new X509Name("O=NAB Test,C=US"),
keyPairServer.Public,
null,
keyPairServer.Private
);
// build string to send to Apple
string csr = CSR_HEADER + "\r\n" + Convert.ToBase64String(p10builder.GetEncoded()) + "\r\n" + CSR_FOOTER;
Apple 的页面接受证书并向我提供响应证书,以便我从中提取一些信息。但是,当我“激活”此证书时,我得到“未知错误”。因为我正在使用 BC Apple 支持拒绝提供帮助。我确实注意到的一件事是,我的 CSR 数据大约是 OpenSSL 数据的两倍。
我认为它可能与 -nodes 有关,但我不确定。
【问题讨论】:
-
充气城堡的人们非常乐于助人。我似乎记得过去在他们的邮件列表档案中看到过一些类似的问题。另请参阅Apple Push Notification certificates without the Mac Keychain。
标签: c# openssl bouncycastle csr