Tag: x509certificate

使用用户证书以Web表单签名数据的最佳方式

我们有一个C#Web应用程序,用户可以使用存储在浏览器中的数字证书进行连接。 从我们看到的示例中,一旦启用SSL,validation其身份将很容易,因为我们可以使用Request.ClientCertificate访问证书中的字段来检查用户的名称。 但是,我们还要求签署用户发送的数据(一些简单的字段和一个二进制文件),这样我们就可以毫无疑问地certificate哪个用户输入了我们数据库中的每个记录。 我们的第一个想法是创建一个小文本签名,包括字段(如果可能的话,还有文件的md5),并使用证书的私钥加密它,但是…… 据我所知,我们无法访问证书的私钥来签署数据,我不知道是否有任何方法可以在浏览器中对字段进行签名,或者我们除了使用Java之外别无选择小程序。 如果是后者,我们将如何做到(我们可以使用任何开源小程序吗?如果我们自己创建一个小程序会更好吗?) 当然,如果有任何方法可以使用我们可以从用户证书访问的数据“签署”服务器中收到的字段,那会更好。 但如果没有,任何关于解决问题的最佳方法的信息将不胜感激。

如何从pfx / cer创建snk?

微软似乎已经创建了一个认证丛林,这很难理解。 Microsoft X.509证书(.cer) 个人信息交流(.pfx) 程序集签名密钥属性(.snk) 是否建议基于pfx或cer创建snk文件? (不确定它是否可能,如果它可能如何完成?) 虽然可以使用受密码保护的pfx对程序集进行签名,但它看起来并不强大,除非使用snk签名。 但是snk没有密码保护。 哪一个更安全? 由于我是项目中唯一的开发人员,我没有多开发人员安全环境问题,但仍想知道什么是最好的方法。 非常感谢,

在WCF中,服务器没有访问客户端的公钥,客户端没有访问服务器的公钥 – 仍然是Web方法操作成功。 为什么?

我在使用消息安全性的X.509服务器证书( .pfx )[未自签名,组织提供]保护的开发服务器上有一个WCF服务。 在我的本地计算机上,客户端应用程序使用消息安全性使用客户端证书( .pfx )[非自签名]文件来使用它。 预期的操作(Web服务方法)成功地运行了所需的结果。 客户服务电话: try { ServiceClient.Service1Client obj = newServiceClient.Service1Client(); Response.Write(obj.Add(1, 1)); } catch (Exception ex) { Response.Write(ex.InnerException.Message); } 题: 根据https://blogs.msdn.microsoft.com/bradleycotier/2011/12/14/mutual-authentication-with-a-iis-hosted-wcf-data-service-installed-in-a-workgroup-environment/其中说: 为了使客户端和服务能够使用证书成功进行通信,WCF客户端应用程序必须能够访问客户端的私钥,并且IIS(接收方)必须能够访问客户端的公钥。 相反,IIS必须能够访问服务私钥,并且客户端必须能够访问服务公钥。 我没有通过MMC或文件在任何一方(客户端或服务器)导入服务器或客户端的任何公共证书.cer文件,那么操作如何成功? 因为它违背了文章中分享的逻辑。 在多客户端方案中,如果我们打算拥有单个客户端.pfx证书,我们如何将其分发给所有客户端? 您的建议很有价值,请分享一些。

忽略JWT中的签名

我有一个使用OpenId Connect的Web应用程序。 我创建了一个自签名证书,但它仍未由CA签名。 如何忽略签名validation? 这是我到目前为止: SecurityToken validatedToken = null; var tokenHandler = new JwtSecurityTokenHandler { Configuration = new SecurityTokenHandlerConfiguration { CertificateValidator = X509CertificateValidator.None }, }; TokenValidationParameters validationParams = new TokenValidationParameters() { ValidAudience = ConfigurationManager.AppSettings[“Audience”], ValidIssuer = ConfigurationManager.AppSettings[“Issuer”], AudienceValidator = AudienceValidator, ValidateAudience = true, ValidateIssuer = true }; return tokenHandler.ValidateToken(jwtToken, validationParams, out validatedToken); 它抛出以下exception: IDX10500:签名validation失败。 无法解析SecurityKeyIdentifier:’SecurityKeyIdentifier […]

使用C#中的RSA私钥文件创建RSACryptoServiceProvider对象

如何使用RSA私钥文件正确创建RSACryptoServiceProvider对象? 我生成了一个RSA私钥,并使用以下方法将其导出到OSX上的p12文件: openssl genrsa -out rsakey.pem 2048 openssl pkcs12 -export -out rsakey.p12 -inkey rsakey.pem -nocerts 在我在Windows笔记本电脑上运行的C#代码中,我在尝试实例化X509Certificate2对象时遇到错误,以便我可以将私钥作为RSACryptoServiceProvider对象从中获取: var privateKey = new X509Certificate2(p12_file, “pass”, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet).PrivateKey as RSACryptoServiceProvider; CryptographicException:参数不正确。 以下是整个C#代码供参考。 请注意,我只是尝试通过遵循X509Certificate2类的文档来获取私钥作为RSACryptoServiceProvider对象。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Net; using System.Security; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Globalization; using Jose; using […]

validationJWT签名时的SecurityTokenSignatureKeyNotFoundException

我正在尝试为我的组织实施OpenID Connect规范。 我在测试依赖方应用程序中使用Microsoft的OpenID Connect的OWIN实现来validation我的协议实现。 我已经公开了以下元数据文档: { “issuer”: “https://acs.contoso.com/”, “authorization_endpoint”: “http://localhost:53615/oauth2/auth”, “token_endpoint”: “http://localhost:53615/oauth2/token”, “userinfo_endpoint”: “http://localhost:53615/connect/userinfo”, “jwks_uri”: “http://localhost:53615/connect/keys”, “ui_locales_supported”: [ “en-GB” ] } 签名密钥作为此文档公开: { “keys”: [ { “n”: “xpXxl3M-YkZlzQJdArO1TfOGT2no-UL4dbZ7WuSCNIsSfyGDaqUXjMMHNyq9yD3vp-NCyk8kmn7d5XqHufnceXJM8q4xTrhN3lvywdBSbR-dwXsA-B-MJVgfiK0d_z-mxP9ew2Hj9-KkWbWCzsswlWp3gZ4mB4RGutB1IRSzXVIbvZ-MtKUb6XUDU4LDb_c1xCEXWZxhR-o1a1dLfObH2hHJ-w5y6odGlKtOFx4i4h0u7-Oj5R6k5b2YXEHM0IuYeN0u0sQvrTecokntGzPrvhnKy69I7Z_az5rC5kgloh25D9lTbe4vcRU7FXlYCFYDZsT0_IkGIXRi7brOS4f1ow”, “e”: “AQAB”, “kty”: “RSA”, “use”: “sig”, “alg”: “RS256”, “kid”: “F8A59280B3D13777CC7541B3218480984F421450” } ] } 使用JwtSecurityToken类使用JwtSecurityToken类及其关联的处理程序生成标识令牌。 此代码表示如何构造令牌并将其作为响应数据的参数返回给调用系统。 var credentials = new X509SigningCredentials(cert); // My certificate. var issuedTime = DateTime.UtcNow; […]

如何从证书存储中获取X509Certificate并生成xml签名数据?

如何从证书存储中获取X509Certificate,然后在.net C#中生成XML SignatureData?

C#SSL服务器模式必须使用具有相应私钥的证书

我将学习如何在C#中处理作为服务器端的HTTPS流量,并且在第一步中我遇到了一些麻烦。 这是一些代码( http://pastebin.com/C4ZYrS8Q ): class Program { static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) return true; Console.WriteLine(“Certificate error: {0}”, sslPolicyErrors); return false; } static void Main() { var tcpListener = new TcpListener(IPAddress.Parse(“127.0.0.1”), 8080); tcpListener.Start(); var clientAccept = tcpListener.AcceptTcpClient(); Thread.Sleep(1000); if (clientAccept.Available > 0) { var sslStream = […]

如何在Https请求中添加RestSharp添加客户端证书? (C#)

如何在Https请求中添加RestSharp添加客户端证书? 我的代码不起作用。 public static IRestResponse AsyncHttpRequestLogIn(string path, string method, object obj) { var client = new RestClient(Constants.BASE_URL + path); // https:…. var request = method.Equals(“POST”) ? new RestRequest(Method.POST) : new RestRequest(Method.GET); request.RequestFormat = RestSharp.DataFormat.Json; // The path to the certificate. string certificate = “cer/cert.cer”; client.ClientCertificates.Add(new X509Certificate(certificate)); request.AddBody( obj ); IRestResponse response = client.Execute(request); return response; […]

使用CA证书文件validation远程服务器X509Certificate

我使用OpenSSL生成了CA和多个证书(由CA签名),我有一个.NET / C#客户端和服务器都使用SslStream ,每个都有自己的证书/密钥,启用了相互身份validation并禁用了吊销。 我正在使用RemoteCertificateValidationCallback为SslStreamvalidation远程服务器的证书,我希望我只能在程序中加载CA的公共证书(作为文件)并使用它来validation远程证书,而不是在Windows中实际安装CA.证书商店。 问题是除非我将CA安装到商店中,否则X509Chain不会显示任何其他内容,当我打开其中一个证书的PEM版本时,Windows CryptoAPI shell也会显示。 我的问题是,当RemoteCertificateValidationCallback , X509Certificate和X509Chain似乎没有给我任何工作时,如何使用CA的公共证书文件而不使用Windows证书存储或WCF来validation我的特定CA是否签署了证书?