Tag: client certificates

处理Identity Server客户端凭据流时在自签名客户端证书中出现问题

我使用MakeCert.exe为我的内部开发目的创建了自签名证书 步骤1 :我使用以下命令创建了根CA. makecert -n “CN=Bala root signing authority” -cy authority -r -sv root.pvk root.cer 步骤2 :使用以下命令安装在步骤#1中创建的根CA证书 certutil -user -addstore Root root.cer 步骤3 :我使用以下命令创建了客户端证书 makecert -pe -n “CN=Bala Client” -a sha1 -cy end ^ -sky signature ^ -ic root.cer -iv root1.pvk ^ -sv Bala.pvk Bala.cer 步骤#4 :我使用以下命令为相应的客户端证书创建了一个.pfx文件 pvk2pfx -pvk Bala.pvk -spc Bala.cer -pfx Bala.pfx 根CA即“CN […]

有没有办法使用FtpWebRequest使用C#中的客户端证书对FTP进行身份validation?

我正在尝试将文件上传到FTP服务器,我需要使用客户端证书进行身份validation,而不是用户名和密码。 var fullFtpPath = String.Concat(ftpItem.FtpAddress, “/”, record, “.txt”); FtpWebRequest request = (FtpWebRequest) WebRequest.Create(fullFtpPath); request.Credentials = new NetworkCredential(ftpItem.Username, ftpItem.Password); request.Method = WebRequestMethods.Ftp.UploadFile; request.UseBinary = true; request.UsePassive = ftpItem.UsePassive; request.EnableSsl = ftpItem.UseSSL; request.ContentLength = bytes.Length; using(Stream s = request.GetRequestStream()) { s.Write(bytes, 0, bytes.Length); } FtpWebResponse response = (FtpWebResponse) request.GetResponse(); Debug.WriteLine(“Upload File Complete, status {0}”, response.StatusDescription); db.LogExport(siteId, fullFtpPath, […]

使用客户端证书进行智能卡身份validation

我有第三方Web应用程序,现在我的经理想要将智能卡身份validation添加到某些页面(而不是整个应用程序)并返回证书信息。 我想的是向这些页面添加按钮,在onclick事件中,我将进行客户端证书身份validation(其中将出现证书选择窗口,然后是“PIN”窗口)并返回证书对象以供进一步处理。 我最初想过一个Web服务来进行客户端证书身份validation并返回证书信息,这很好,因为我们可能会考虑在其他Web应用程序(在不同平台上)使用该Web服务。 但是,我找不到任何代码示例。 然后我找到了IIS解决方案 。 我现在创建了一个单独的文件夹,其中包含一个需要客户端证书的页面。 在按钮单击事件上,我重定向到该页面。 然后在该页面上,我使用X509Certificate类检索证书信息。 我不认为这对我正在做的事情有所帮助,或者至少我不知道它有何帮助。 所以我的问题是(抱歉长篇背景说明) 如何使用认证结果从该页面重定向? 如果可能,有关如何构建以与IIS相同的方式进行客户端证书身份validation的Web服务的任何参考? 谢谢 更新我环顾四周,仍然没有关于如何实现这一点的线索。 我不确定如何在SSL / TLS握手阶段为Web服务编写代码。 我不知道如何将认证返回到我调用此function的页面。 所以我现在要做的是从需要客户端身份validation的受保护页面重定向。 Web服务器似乎缓存了身份validation结果。 这是我的第三个问题,希望有人能回答。 如何在页面会话结束时清除validation结果,以便每次访问页面时,它都会请求客户端validation(将出现证书选择窗口,然后是“PIN”窗口)?

如何使用客户端证书在Web API中进行身份validation和授权

我正在尝试使用客户端证书来使用Web API对设备进行身份validation和授权,并开发了一个简单的概念certificate来解决潜在解决方案的问题。 我遇到的问题是Web应用程序没有收到客户端证书。 一些人报告了这个问题, 包括在本问答中 ,但他们都没有答案。 我希望提供更多细节来重振这个问题,并希望得到我的问题的答案。 我对其他解决方案持开放态度。 主要要求是用C#编写的独立进程可以调用Web API并使用客户端证书进行身份validation。 此POC中的Web API非常简单,只返回单个值。 它使用一个属性来validation是否使用了HTTPS以及是否存在客户端证书。 public class SecureController : ApiController { [RequireHttps] public string Get(int id) { return “value”; } } 以下是RequireHttpsAttribute的代码: public class RequireHttpsAttribute : AuthorizationFilterAttribute { public override void OnAuthorization(HttpActionContext actionContext) { if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps) { actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden) { ReasonPhrase = “HTTPS […]