Tag: certificate

从远程主机自动下载X509证书链

我正在构建一些.net代码,它将在我们的一台服务器上按计划无人值守运行。 其执行的一部分要求它执行Java可执行文件,该可执行文件通过SSL与某些Web资源和服务进行通信。 如果它通过SSL做某事并且它没有远程证书链中的每一个证书,那么Java绝对会适合。 所以在.net中,我需要能够具体的https:// [无论] .com资源,并需要它在本地下载整个远程链。 为什么我要自动执行此操作? 因为我希望简化部署并且不必执行此操作4次,然后每次Oracle证书之一到期时再次执行此操作。 我这样做: X509Certificate2 lowestCert = SecurityHelper.DownloadSslCertificate(keyDownloadLocation); X509Chain chain = new X509Chain(); chain.Build(lowestCert); int counter = 0; foreach (X509ChainElement el in chain.ChainElements) { //Extract certificate X509Certificate2 chainCert = el.Certificate; //Come up with an alias and save location string alias = certBaseName + counter; string localLocation = Path.GetDirectoryName( System.Reflection.Assembly.GetEntryAssembly().Location ) […]

通过代码将X509证书添加到商店

此代码将x509 cer cert文件添加到证书库中(使用System.Security.Cryptography.X509Certificates ): var filename = “Cert.cer”; var cert = new X509Certificate2(filename); var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadWrite); store.Add(cert); 证书的生成地点: makecert -r -pe -sky exchange -n “CN=Blah” Cert.cer -sv Cert.pvk 但是 – 这会将证书添加到当前用户的“个人”证书中 – 如何将证书添加到不同的证书集合中 – 在我的情况下,我想为当前用户添加“受信任的人”证书。 谢谢

.Net以编程方式与Bouncy Castle签署PKCS#10请求

我们使用CertEnroll在客户端上生成了有效的PKCS#10证书请求。 现在我们需要对其进行签名并将结果返回给客户端,其中CertEnroll将处理本地证书库的内容。 这是一个B2B应用程序,根签名证书将自行生成,或者我们可以使用我们现有的Thawte SSL证书。 Server(2008)没有运行Active Directory,除非绝对必要,否则我们不希望为此创建独立的签名基础结构/服务。 不需要撤销等 – 我们希望以编程方式执行此操作。 我很乐意使用BouncyCastle库但是C#lib缺少任何有意义的文档,而原始的Java文档无疑是相似的,而C#实现的不同之处让我更加困惑。 是否有人知道(或拥有)样本C#(或VB)代码或已知相关链接,使用BouncyCastle或本​​地.Net类? 完成这件事的任何帮助将不胜感激!

Azure API服务器无法validation请求

我有一个任务(我尝试使用worker角色并上传控制台应用程序并运行.exe),该任务应该每天运行一次,并收集我的一些虚拟机的Azure Metrics。 这在本地完美无缺,但在云服务上我得到此错误: 未处理的exception:Microsoft.WindowsAzure.CloudException:ForbiddenError:服务器无法validation请求。 validation证书是否有效并与此订阅相关联。 在Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSucces …等 发生这种情况的路线是: MetricDefinitionListResponse metricListResponse = metricsClient.MetricDefinitions.List(resourceId, null, nspace); 这是我的代码的一部分: string subscriptionId = “fc4xxxx5-835c-xxxx-xxx-xxxxxxx”; // The thumbprint of the certificate. string thumbprint = “‎f5 b4 xxxxxxxx f7 c2”; // Get the certificate from the local store. //X509Certificate2 cert = GetCertificate(StoreName.My, StoreLocation.LocalMachine, thumbprint); //cert = GetCertificate(StoreName.My, StoreLocation.CurrentUser, thumbprint) ?? new X509Certificate2((“manageAzure.cer”)); […]

证书存储区中证书的私钥不可读

我想我和这个人一样有同样的问题,但我没有他/她那么幸运,因为提供的解决方案对我不起作用。 提供的解决方案在C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys ( 不在子目录中)和C:\Users\[Username]\AppData\Roaming\Microsoft\Crypto\RSA (和子目录)中查找文件但是因为我希望安装程序将应用程序安装到所有用户,所以自定义操作在SYSTEM -User下运行,这导致实际在C:\ProgramData\Application Data\Microsoft\Crypto\RSA\S-1-5-18 。 当以管理员(右键单击 – >运行为管理员)运行“普通”应用程序执行完全相同的代码时,将在C:\Users\[Username]\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-1154405193-2177794320-4133247715-1000创建一个文件C:\Users\[Username]\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-1154405193-2177794320-4133247715-1000 。 使用WIX自定义操作生成的证书似乎没有私钥(“ 密钥集不存在 ”),而“正常”应用程序生成的证书具有。 在查看文件的权限时,它们似乎没问题,即使它们不同(工作者确实包括SYSTEM用户),即使将SYSTEM 1添加到(“非工作”)文件后我也无法在这里读取私钥,同样的错误。 然后我使用FindPrivateKey工具找到相应的文件,但我得到的是”Unable to obtain private key file name” 。 好的,这里有什么? Windows在哪里存储SYSTEM用户存储的证书的私钥? 也许没有创建任何私钥文件? 为什么?

如何使用C#以编程方式安装证书

我的学校网页有自己的证书(你必须手动安装),我想创建一个程序,在我点击一个按钮后,会安装一个certificate.cer(从visual studio资源)到本地用户 – “受信任的根证书权限”。你知道如何在Visual C#中编写代码吗?

转换椭圆曲线参数(BC到MS)

我正在尝试生成ECDSA自签名证书,如使用ECDSA生成证书中所述。 将所有来自bartonjs的答案放在一起并使用Net.Framework 4.7 (或Net.Core 2.0 )代码似乎正在起作用,尽管有一些含糊不清(至少有一个): 我不确定如何正确地将私钥(’D’参数)从BC-BigInteger为MS-byte[] 。 使用BigInteger.ToByteArray()抛出exception: CryptographicException :指定的键参数无效。 QX和QY是必填字段。 QX,QY必须长度相同。 如果指定了D,则它必须与命名曲线的QX和QY的长度相同,或者与显式曲线的Order的长度相同。 同时validationECParameters(方法ECParameters.Validate() )。 使用BigInteger.ToByteArrayUnsigned()可以提供更好的结果(几百个生成的密钥对失败),但仍然…… 当使用ToByteArray()转换’D’时通常长一个字节(’D’与DX相比有33个字节,而DY有32个字节)。 使用ToByteArrayUnsigned() ,’D’有时短一个字节。 所以我的问题是使用ToByteArrayUnsigned()是否可以。 private const string NCryptExportPolicyProperty = “Export Policy”; private const string SignatureAlgorithm = “Sha256WithECDSA”; private static readonly ECCurve MsCurve = ECCurve.NamedCurves.nistP256; private static readonly DerObjectIdentifier BcCurve = SecObjectIdentifiers.SecP256r1; // must correspond with MsCurve public static […]

无法将带有私钥的生成证书导出到.net 4.0 / 4.5中的字节数组

我需要使用私钥导出和导入生成的证书到字节数组和从字节数组导入,除非我使用.NET framework 4.0和4.5,否则我没有任何问题。 我正在使用BouncyCastle库生成自签名证书,然后将它们转换为.net格式(X509Certificate2对象)。 不幸的是,升级到最新的框架我无法导出私钥。 这是代码: using System; using System.Diagnostics; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Crypto.Prng; using Org.BouncyCastle.Math; using Org.BouncyCastle.Security; using Org.BouncyCastle.X509; namespace X509CertificateExport { class Program { static void Main(string[] args) { var certificate = Generate(); var exported = certificate.Export(X509ContentType.Pfx); var imported = new X509Certificate2(exported, (string)null, […]

如何在Azure Key Vault中序列化和反序列化PFX证书?

我有一堆字符串和pfx证书,我想存储在Azure Key保险库中,只允许用户/应用程序获取它们。 将字符串存储为Secret并不难,但是如何以可以检索它的方式序列化证书并在C#中反序列化为X509Certificate2对象? 我试着将它存储为钥匙。 这是Azure powershell代码 $securepfxpwd = ConvertTo-SecureString -String ‘superSecurePassword’ -AsPlainText -Force $key = Add-AzureKeyVaultKey -VaultName ‘UltraVault’ -Name ‘MyCertificate’ -KeyFilePath ‘D:\Certificates\BlaBla.pfx’ -KeyFilePassword $securepfxpwd 但是当我试图用GetKeyAsync方法获取它时,我无法使用它。