Tag: 证书

如何在C#中从USB令牌读取证书

我有一个包含加密证书的USB令牌,该证书具有公钥和私钥。 现在我想在C#中创建一个应用程序,通过它我可以找到可访问的证书信息。 当我插入USB令牌时,它正被检测到,但计算机网段上没有显示驱动器,就像闪存驱动器一样。 如何从USB驱动器读取证书?

使用C#中的crl(证书吊销列表)validation证书

我想使用CRL属性validation证书。 但是当我在为CRL检查设置标志后调用证书上的verify()方法时,它会出现以下错误。 1)RevocationStatusUnknown =>撤销function无法检查证书的撤销。 2)OfflineRevocation =>撤销function无法检查证书的吊销,因为撤销服务器处于脱机状态… 但服务器还可以。 这是我的标志设置代码 X509Chain ch = new X509Chain(); ch.ChainPolicy.RevocationMode = X509RevocationMode.Online; ch.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain; ch.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(2000); ch.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag; ch.ChainPolicy.VerificationTime = DateTime.Now; ch.Build(certificate); 无法弄清楚这背后的原因是什么?

防止编辑文件

防止文本文件(例如xml)被用户编辑的最明智的方法是什么? 我需要确保我存储用户名的文件和桌面应用程序的权限不能简单地编辑。 也许我可以生成文件的证书,桌面应用程序检查这个? 我在WinForms应用程序中使用C#。

对Web服务的访问控制

这是我希望实现的目标: 我的ASP.NET Web服务托管在名为// service的服务器上。 我想通过服务器和应用程序来控制对Web服务的访问。 我的意思是,如果我在名为// web1的服务器上托管了两个ASP.NET Web应用程序(app1和app2),我只希望// web1 / app1能够调用Web服务。 我知道我可以授予访问// web1的IP地址的权限,但这样可以允许// web1 / app1和// web1 / app2访问Web服务。 我正在考虑使用SSL证书,因为我不希望Web应用程序处理登录名/密码。 在// service上 ,我将授予访问// web1的ip并将客户端证书从// web1映射到Windows帐户,这将只允许来自// web1的应用程序访问。 但是,如何进一步控制对web1 / app1的访问?

忽略控制台应用程序中的Web浏览器SSL安全警报

我正在创建一个能够远程捕获网站截图的控制台应用程序。 一切都在工作,除了我无法避免证书错误。 每次我收到弹出消息,我都无法通过。 我试过用: ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); 但它不起作用。 还尝试了这里找到的解决方案: http : //www.codeproject.com/Articles/31163/Suppressing-Hosted-WebBrowser-Control-Dialogs但是它似乎不适用于从控制台应用程序调用的webbrowser。 有任何想法吗?

C#证书生成框架

有谁知道可以生成公钥/私钥,X.509证书并签署这些证书的C#框架?

如何在C#中将xml格式的密钥对更改为PEM格式?

我尝试将创建的密钥对以xml格式更改为PEM格式。 这是我的代码。 CspParameters cspParams = new CspParameters(); cspParams.ProviderType = 1; cspParams.Flags = CspProviderFlags.UseArchivableKey; cspParams.KeyNumber = (int)KeyNumber.Exchange; rsaProvider = new RSACryptoServiceProvider(1024,cspParams); RSAParameters rsa_params = rsaProvider.ExportParameters(true); byte[] rsa_export = rsaProvider.ExportCspBlob(true); //here I’ve try to get private key data string data__ = Convert.ToBase64String(rsa_export); FileStream fs = new FileStream(privateKeyFileName, FileMode.CreateNew); string type = “RSA PRIVATE KEY”; string header = […]

如何清除任何SSL证书数据

我有一个客户端 – 服务器设置。 客户端创建代理以与服务器通信。 当通信协议为HTTPS时,代理通过以下行侦听SSL证书validation事件: ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate); ValidateRemoteCertificate方法处理证书exception。 在客户端中,用户可以选择3个安全级别中的一个:低,中和高。 在低级别,ValidateRemoteCertificate方法忽略任何错误并始终返回true。 在中级,ValidateRemoteCertificate方法触发一个事件,通知客户端该问题。 在此阶段,向用户显示消息,通知他证书存在问题,并允许用户选择是继续并接受与服务器的连接还是拒绝。 在High级别,ValidateRemoteCertificate方法拒绝任何错误的连接。 到现在为止还挺好。 方案如下: 客户端加载了预定义的安全级别“中”,该级别已被用户接受,并且与服务器建立连接,而不会传播任何证书问题。 用户断开客户端与服务器的连接(通过特殊按钮)。 用户尝试重新连接客户端。 在此阶段,客户端可以通过测试按钮测试连接。 尽管已为连接测试创建了新代理,并且已从ServerCertificateValidationCallback(特定代理类型)中清除了所有ValidateRemoteCertificate方法,但测试方法返回成功。 此外,没有为有问题的证书触发事件,并且不调用ValidateRemoteCertificate方法。 我试图实现的行为是,当执行测试时,ServerCertificateValidationCallback将表现为在客户端启动并且ValidateRemoteCertificate发挥作用后它是对它的第一次调用。 我试图寻找任何方法来清除ServicePointManager中的任何委托/事件,但我找不到任何。 这里有缓存可以清除吗? 我希望这个场景足够清晰。

具有可导出私钥的证书的“坏密钥”例外

我正在尝试使用非对称加密来加密然后解密文件。 我使用makecert创建了一个测试证书,并将其安装到我的个人localmachine商店中。 将来我必须在几台服务器上安装这个证书,这就是为什么我用“-pe”标志创建它,也就是说,用可导出的私钥创建它。 证书已成功创建和安装,我在mmc中看到“您有一个与此证书对应的私钥”注释。 现在我尝试使用.NET 3.5中的RSACryptoServiceProvider加密数据。 它成功了。 但是当我试图解密它时,我得到“坏键”exception。 如果我创建没有“-pe”选项的证书,相同的代码适用于解密。 这是代码: RSA rsaKey = (RSA)myCertificate.PrivateKey; RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)rsaKey; byte[] plainText = rsaCsp.Decrypt(encryptedText, true); 我还尝试了另一种方法,使用System.Security.Cryptography.Pkcs命名空间: EnvelopedCms envelope = new EnvelopedCms(); envelope.Decode(encryptedText); envelope.Decrypt(); byte[] plainText = envelope.ContentInfo.Content; 结果是一样的……任何人都可以帮忙吗?

如何创建测试签名证书?

我正在尝试按照这些说明使用WIF创建SAML2令牌。 说明说 要向SecurityTokenDescriptor提供签名凭据,您必须首先获得对签名证书的引用作为X509Certificate2实例。 从中您可以创建SecurityKeyIdentifier并生成SigningCredentials实例 提供以下代码: X509Certificate2 signingCert = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, “CN=busta-rpsts.com “); SecurityKeyIdentifier ski = new SecurityKeyIdentifier(new SecurityKeyIdentifierClause[] { new X509SecurityToken(signingCert).CreateKeyIdentifierClause() }); X509SigningCredentials signingCreds = new X509SigningCredentials(signingCert, ski); descriptor.SigningCredentials = signingCreds; 我尝试使用包含主题密钥标识符的makecert制作测试证书,但是当我运行通过上面代码生成的任何证书时,我得到以下System.NotSupportedException : ‘X509SecurityToken’不支持’X509SubjectKeyIdentifierClause’创建。 调用此行时会发生这种情况: new X509SecurityToken(signingCert).CreateKeyIdentifierClause() 现在我知道说明说…… 注意:使用makecert.exe创建的证书不包含主题密钥标识符,因此不能以此方式使用。 您应该使用Windows Server生成证书或从Verisign或同等提供商处购买证书。 …但是我使用了-eku 2.5.29.14的论据,我希望能解决这个问题,我认为这张图片表明我做得对吗? 任何人都可以给我说明我如何创建一个测试证书,我可以使用它来使这段代码正常工作,或指向我正确的方向? 我也不确定他们的意思是“你应该用Windows Server生成证书”。 这是否意味着创建CSR? 提前致谢 :)