Rya*_*ies 5 .net c# ssl-certificate x509certificate2
我有一台使用以下证书进行SSL / TLS通信的服务器:

在我的C#代码中,我使用自定义证书验证回调以编程方式查看此证书的属性,如下所示:
private static bool CertificateValidationCallBack(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
// Certificate2 is better than Certificate1, right?
X509Certificate2 cert = (X509Certificate2)certificate;
Console.WriteLine("Certificate Subject : " + cert.Subject);
Console.WriteLine("Certificate Issuer : " + cert.Issuer);
// So on and so forth...
}
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是我似乎看不到“签名哈希算法”属性。cert.SignatureAlgorithm.FriendlyName返回RSASSA-PSS,并且
new System.Security.Cryptography.Oid(cert.GetKeyAlgorithm()).FriendlyName)
简单地返回RSA。这些属性似乎都不给我在GUI中看到的“ sha256”属性。如何退还该财产?
编辑:我在Cryptography.SE上发现了一个相关问题,该问题说明Microsoft的证书查看器GUI有点不合标准,但如果是这样的话,我也想不合要求。我想知道如何以与GUI相同的方式报告“ sha256”。
更新08/13:从另一个角度来看,当我使用命令时
certutil.exe -dump cert.cer
Run Code Online (Sandbox Code Playgroud)
结果摘录:
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.10 RSASSA-PSS
Algorithm Parameters:
0000 30 34 a0 0f 30 0d 06 09 60 86 48 01 65 03 04 02
0010 01 05 00 a1 1c 30 1a 06 09 2a 86 48 86 f7 0d 01
0020 01 08 30 0d 06 09 60 86 48 01 65 03 04 02 01 05
0030 00 a2 03 02 01 20
2.16.840.1.101.3.4.2.1 sha256 (sha256NoSign)
05 00
1.2.840.113549.1.1.8 mgf1
2.16.840.1.101.3.4.2.1 sha256 (sha256NoSign)
05 00
0x20 (32)
Run Code Online (Sandbox Code Playgroud)
我当然希望我知道如何为自己找到这些OID(即sha256的OID)...而无需借助解析实际certutil命令的输出。
从您的 DER 字节来看,这些是签名算法。
2a 86 48 86 f7 0d 01 01 08
Run Code Online (Sandbox Code Playgroud)
我知道这些是签名算法。但是,我不知道如何分析这些字节。
我认为最后一个字节意味着哈希算法。我使用 openssl 进行了测试,当我使用 sha256、sha384、sha5512 生成证书时,最后一个字节从 0b->0c->0d 更改。当你弄清楚后请告诉我。
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |