GetClientCert在IIS托管的api上没有接收到。
我试图在Web API上手动验证证书.问题一直是GetClientCertificate只是返回null. var certRequest= actionContext.Request.GetClientCertificate(); certRequest == null ? "Certificate not found" : $"Certificate found"; iis网站就像, https://testapi.web.com SSL上附加的证书文件显示为DNS =*.Web.com. 还有另一个证书将其在CERT Store上归档,但没有与HTTPS绑定一起绘制. dns = cl-testapi.web.com 我试图从客户端呼叫中提供证书文件,每次都以null收到的文件. 收到的文件. client side code: var handler = new HttpClientHandler()
16 2024-04-26
编程技术问答社区
用ECC加密证书签署令牌
我正在使用自签名证书ECDH_secP384r1签名令牌. 这是我创建证书的PowerShell: $Cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname $Certname -NotAfter $ExpireDate -KeyAlgorithm ECDH_secP384r1 现在,在我的.NET核心应用程序中,我首先加载证书: private readonly string _certificateSubjectName; public X509Certificate2 GetSigningCertificate() { using (var store = new X509Store(StoreLocation.LocalMachine)) { store.Open(OpenFlags.ReadOnly);
10 2024-04-26
编程技术问答社区
在.NET 5中设置证书私钥的权限
我有一个要求我需要设置证书私钥的权限,我使用以下方法( setCertificatePrivateKeypermissions ),该方法与 .NET框架4.7.2 但是现在我不得不将项目框架迁移到 .NET 5 ,因为此项目框架升级此现有代码正在破坏. RSACryptoServiceProvider and CspParameters classes refers to System.Security.Cryptography.Csp.dll (C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security . 在将证书转换为privatekey到rsacryptoserviceprovider时,它正在返回null. 在创建cspparameters的实例时,我无法从RSA分配CryptokeYsecurity值,因为此属性在RSACRYPTOSERV
6 2024-04-26
编程技术问答社区
从证书中获取 Sha256 公钥
当前,正在处理客户端服务器应用程序(CHAT)为服务器和客户端实施安全性,很少有客户写在Java Smack库中,他们使用的是Java的TLS固定,需要SHA2 HASH [服务器是使用C#实现的,我在服务器端具有证书,如何从证书中获得以下格式的SHA2公钥,以下是我的代码. cer =new X509Certificate2(ConfigurationManager.AppSettings["CertificateName"],"123456"); string hellow= cer.GetCertHashString(); //it will return sha1 hash 我需要的是以下格式和SHA2-256键 SHA2-256键 83:F9:17:1E:06:A3:13:13:11:88:89:F7:D7:93:93:02:BD:1B:1B:7A:20:42:42:EE:0C:0C:02:02:9A :bf:8d:d0:6f:fa:6c:d9:d3
8 2024-04-25
编程技术问答社区
来自商店的带私钥的X509Certificate2
我有一个X509Certificate2,带有此代码的Windows Store无法从Windows商店导出的专用密钥: X509Certificate2 oCertificato = null; X509Store my = new X509Store(StoreName.My, StoreLocation.CurrentUser); my.Open(OpenFlags.ReadOnly); System.Security.Cryptography.RSACryptoServiceProvider csp = null; foreach (X509Certificate2 cert in my.Certificates) { if (cert.SerialNumber.Trim() == cSerial) { csp = (System.Security.Cryptography.RSACryptoServiceProvider)cert.Pri
8 2024-04-25
编程技术问答社区
访问ServiceAccountCredential时的NotImplementedException C#
我有一个Windows应用程序,该应用程序访问Google电子表格以创建电话簿.当我尝试打开电话簿时,我被标记为System.NotImplementedException: The method or operation is not implemented.我不确定为什么,因为它似乎正在实现? 这是问题所标记的第一个位置: internal object FromCertificate(X509Certificate2 certificate) { throw new NotImplementedException(); //Error flags this line } 这是第二个.据我所知,这部分没有错,但是它仍然在标记一个例外. ServiceAccountCredential credential = new ServiceAccountCredential( new Serv
为什么自签名的PFX X509Certificate2私钥会引发一个NotSupportedException?
我创建了一个自签名的PFX X509Certificate2(使用 this Answer ),但出于某种原因,证书的私人钥匙是正在抛弃一个诺言tepstection dististe true hasprivateKey属性. string password = "MyPassword"; ECDsa ecdsa = ECDsa.Create(); CertificateRequest certificateRequest = new CertificateRequest("cn=foobar", ecdsa, HashAlgorithmName.SHA256); X509Certificate2 cert = certificateRequest.CreateSelfSigned(DateTimeOffset.Now, DateTimeOffset.Now.AddYears(5)); File.WriteAllBytes("e:\\mycert.pfx", cert.Exp
0 2024-04-25
编程技术问答社区
在用RSACryptoServiceProvider签名前验证私钥保护
在C#中使用rsacryptoserviceprovider签署数据时,我需要确保以强键保护进口证书和高安全级别,以要求用户每次使用密钥签名时输入密码.这是签名代码的快速简化示例: X509Store myCurrentUserStore = new X509Store(StoreName.My, StoreLocation.CurrentUser); myCurrentUserStore.Open(OpenFlags.MaxAllowed); X509Certificate2 currentCertificate = myCurrentUserStore.Certificates[4]; RSACryptoServiceProvider key = new RSACryptoServiceProvider(); key.FromXmlString(currentCertificate.PrivateKey.ToXmlString(true)); byte[] signedDa
12 2024-04-24
编程技术问答社区
RestSharp 无法发送证书,但 Postman 可以
我只是看不到我在做什么错.我有我获得的证书(不是自签名).我有一个PFX文件和一个密码.我在Postman和API电话中添加了证书.我尝试使用RestSharp添加相同的证书,并且失败 - 服务器返回400个错误,并说没有提供SSL证书. public void AttachCertificate(RestClient client) { try { X509Certificate2 cert = new X509Certificate2(@"C:\...\xxx.pfx", "-password-"); if (client.Options.ClientCertificates == null) client.Options.ClientCertificates = new X509CertificateCollect
10 2024-04-24
编程技术问答社区
SignedData给予指定的无效算法。
我尝试使用mycert.pfx文件私有和公共密钥签名并有效我的签名数据.但是,在签署数据时,我会得到"指定的无效算法".异常 .NET框架我们正在使用的IS 4.5,并且代码如下 public static void CallMainMethod() { string str = "Sign and verify the data"; X509Certificate2 certificate = LoadPrivateKey(); byte[] hashBytes = GetDataHash(str); byte[] signature = GetDigitalSignature(hashBytes); } private static X509Certificate2 LoadPrivateKey() { return new X509Certificate2(@"d:\Keys\myCert.pfx", "Pass#@123
0 2024-04-24
编程技术问答社区
CRL已过期,但是Chainstatus告诉我撤销
我正在使用此 进行链条验证 var ca = new X509Certificate2(caBytes); var intermediate = new X509Certificate2(intermediateBytes); chain.ChainPolicy.TrustMode = X509ChainTrustMode.CustomRootTrust; chain.ChainPolicy.CustomTrustStore.Add(ca); chain.ChainPolicy.CustomTrustStore.Add(intermediate); chain.ChainPolicy.RevocationMode = X509RevocationMode.Online; var build = chain.Build(intermediate); build报告回报false,链状态包含: OfflineRevocation RevocationStatusUnkno
6 2024-04-24
编程技术问答社区
客户端证书始终为空
我有个人以及值得信赖的根认证机构 的证书 尝试使用此位代码将其发布到端点: public void Post() { try { var clientCert = LoadFromStore("MyThumbprint"); var requestHandler = new WebRequestHandler(); requestHandler.ClientCertificates.Add(clientCert); var client = new HttpClient(requestHandler) { BaseAddress = new Uri("https://localhost:44430/") }; var response
10 2024-04-23
编程技术问答社区
X509Certificate2:确定证书私钥是否属于硬件设备,以及它是否需要一个PIN。
我正在编写一个程序来进行加密操作,使用存储在硬件设备上的证书(智能卡). 该程序必须使用.NET Framework 4.5.2 :(不可能更改此操作. 我执行的加密货币事物没有问题:) 序言 据我了解,当包含一个或多个证书的智能卡连接到计算机时,证书出现在Windows证书商店(CurrentUser/My)上. 这是由必须安装的SmartCard软件管理的. 由于我的软件必须与任何硬件设备一起使用,因此最简单的解决方案是弹出窗口,并使用户选择要使用的证书. 第一个问题 我不想显示CurrentUser/MY上的所有证书,但只有与计算机连接的相关硬件的证书. 这或多或少是我正在使用的代码: X509Store storeObject = new X509Store(StoreName.My, StoreLocation.CurrentUser); storeObject.Open(OpenFlags.ReadOnly); fore
10 2024-04-23
编程技术问答社区
C# X509Certificate2.Verify无废止测试
我尝试使用x509certificate2.verify()函数检查证书链是否有效. 验证函数返回false,ChainelementStatus返回" revocationStatusunknown". 有没有办法在不检查撤销status的情况下使用验证函数?没有Internet连接,无法检查撤消Status?是否还有其他功能可以检查链条和证书,而撤销了撤消? 一个肮脏的解决方案是检查evocationstatus是否是元素中的唯一元素.ChainElementStatus. 我已经使用x509 revocation mode.offline和ignorecertificateauthorityrevocationunknown. 代码来自: x509certificate2.verify()始终返回有效证书的false X509Chain ch = new X509Chain(); ch.Build(certificate); ch.ChainPol
6 2024-04-22
编程技术问答社区
使用X509certificate2的RSA加密和解密
所以,我需要的是: 创建用于开发的认证,为客户端获得一个,一个用于服务器 通过从客户端编码的API检索密码并在服务器上解码 现在,我设法创建了此链接.那里的女孩逐步指示如何获得自签名的认证,将其放入商店等...现在,我对: 有问题: 我已经设法使用此代码对数据进行加密: public static string Encrypt(string stringForEncription, string PathToPrivateKey) { X509Certificate2 myCertificate; try { myCertificate = new X509Certificate2(PathToPrivateKey, "Test123"); } catch (Exception e) { throw new C
2 2024-04-22
编程技术问答社区
用x509证书签署一个json文档或字符串
如何使用X509证书签署JSON文档或字符串? public static void fund() { string filePath = @"C:\Users\VIKAS\Desktop\Data.xml"; //Read the file XmlDocument xmlDoc = new XmlDocument(); XElement ele = XElement.Load(filePath); String Xml = ele.ToString(); xmlDoc.LoadXml(Xml); string signature = SignedXMLCert(xmlDoc); bool verified = ValidateSignature(signature); } public static string SignedXMLCert(XmlDocument xmlDoc) { string
2 2024-04-22
编程技术问答社区
使用自我签名的证书
我有此代码: X509Chain x509Chain = new X509Chain(); x509Chain.ChainPolicy.ExtraStore.Add(certificate1); x509Chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; x509Chain.ChainPolicy.RevocationFlag = X509RevocationFlag.ExcludeRoot; x509Chain.Build(certificate2); foreach (X509ChainElement x509ChainElement in x509Chain.ChainElements) { Log("Name: " + x509ChainElement.Certificate.GetNameInfo(X509NameType.SimpleName, false)); foreach
2 2024-04-22
编程技术问答社区
如何在Mono和多个平台上用X509Certificate2正确验证SSL证书
我必须在HttpRequests和websocket>连接的非浏览器应用程序中验证几个SSL证书,该连接应在iOS,Android和Linux上运行. 当发生HTTPS的连接时,我会收到一个X509Certificate2对象的数组,其中底部是服务器证书,最高的对象是根CA(希望).例如,当我连接到https://google.com时,我会收到3 X509Certificate2,以下SubjectName.Name: 0:"CN=google.com, O=Google Inc, L=Mountain View, S=California, C=US" 1:"CN=Google Internet Authority G2, O=Google Inc, C=US" 2:"CN=GeoTrust Global CA, O=GeoTrust Inc., C=US" 我现在需要使用给定信息和以下验证验证证书验证: 信任链验证 主机名验证 证书撤销验证 我尝试过
2 2024-04-22
编程技术问答社区
从X509Certificate2获取私钥时,偶尔会出现 "指定的提供者类型无效 "或 "密钥不存在 "的异常。
我在尝试从x509certificate2证书获得私钥时得到以下例外: system.security.cryptography.cryptographicexception:指定的提供商类型无效. 或 system.security.cryptography.cryptographicexception:键在以下代码线上不存在:rsacryptoserviceprovider rsakey =(rsacryptoserviceprovider)digisigncert.privatekey; stacktrace: system.security.cryptography.cryptographicexception:不存在键. at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean
Azure Web Application new X509Certificate2() causing System.Security.Cryptography.CryptographicException: 拒绝访问
现在,我正在上传一个.pfx文件,输入密码并调用 var cert = new X509Certificate2(fileData, password); 并存储诸如拇指纹等之类的东西.我不需要实际将其存储在服务器上,只需验证它是有效的证书并存储一些信息即可.在本地工作(显然我可以更好地访问我的密钥店),但是当我将其放在Azure中时,我会发现错误: system.security.cryptography.cryptographicexception:访问被拒绝. 有什么方法可以使此信息避开此信息或使用此方法而不拒绝访问权限?我的证书不是很好,所以让我知道您是否需要更多信息.谢谢. 解决方案 在窗口上打开PFX时,任何私钥都会写入磁盘.它们以后会被删除(除非您指定PersistKeySet),但是仍然必须写(ish). 他们在哪里写? 如果您指定X509KeyStorageFlags.MachineKeySet:在计算机密钥库中,您需要成为管理
0 2024-04-22
编程技术问答社区