面对一个非常奇怪的问题X509Certificate2.Verify()为有效证书返回false.也许有些人之前已经遇到过这种奇怪的情况,并且可以对它有所启发.
我正在使用openssl生成客户端证书以进行测试.我创建了一个根CA并根据该根CA生成客户端证书,并将根CA添加到其链中.
我将根CA和客户端证书加载到本地证书存储区,看起来没问题,但是当我从我的NUnit代码加载它来测试X509Certificate2.Verify()时总是返回false.

以下是从商店加载Cert的代码:
X509Store store = new X509Store(StoreName.My);
string thumbprint = "60 d1 38 95 ee 3a 73 1e 7e 0d 70 68 0f 2d d0 69 1e 9a eb 72";
store.Open(OpenFlags.ReadOnly);
var mCert = store.Certificates.Find(
X509FindType.FindByThumbprint,
thumbprint,
true
).OfType<System.Security.Cryptography.X509Certificates.X509Certificate>().FirstOrDefault();
if(mCert != null)
{
var testClientCert = new X509Certificate2(mCert);
}
Run Code Online (Sandbox Code Playgroud)
这是我刚刚生成的客户端证书:(可以从我的本地计算机正确访问CRL URL)
-----BEGIN CERTIFICATE-----
MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQUFADBtMR0wGwYDVQQKExRWaXRh
bEhlYWx0aCBTb2Z0d2FyZTElMCMGA1UECxMcVml0YWxIZWFsdGggU29mdHdhcmUg
Um9vdCBDQTElMCMGA1UEAxMcVml0YWxIZWFsdGggU29mdHdhcmUgUm9vdCBDQTAe
Fw0xNTAyMjcwODQ2MzNaFw0xNjAyMjcwODQ2MzNaMEUxHTAbBgNVBAoTFFZpdGFs
SGVhbHRoIFNvZnR3YXJlMREwDwYDVQQLEwhQbGF0Zm9ybTERMA8GA1UEAxMIVGVz
dFVzZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOkfyjX0PSnRYrBbCC8u
rw7IiFdAUj6frPKEmt0TLAR/4g+NazKdGjRRqxE9mNwX/2zGhIcucfGDVwPtOtiV
opicQEzGiSQkvAc+473MN5D6j3XtBYblALMeMyEYoh3LnHO4K+6kV6XE4BXV/2lV
mAVgXGkZzaayd40DLvg48vPlAgMBAAGjgcUwgcIwCQYDVR0TBAIwADARBglghkgB
hvhCAQEEBAMCB4AwCwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMDEG
CWCGSAGG+EIBDQQkFiJPcGVuU1NMIENlcnRpZmljYXRlIGZvciBTU0wgQ2xpZW50
ME0GA1UdHwRGMEQwQqBAoD6GPGh0dHA6Ly9wbGF0Zm9ybWRhc2hib2FyZC5ubC52
aXRhbGhlYWx0aC5sb2NhbC9wb3J0YWwvY3JsLmNybDANBgkqhkiG9w0BAQUFAAOB
gQBXYSmZaVu6vnyl94SO4qpNOutsUm4p7fQHehljhZ+aRrXE10rivWCt4g0k961E
PDsp4J0DR6uth6et42pBp8v2gFIGSQY/F7NhmOAsOJvM7z0oIBxMLcclIDTygbRp
KjZZpNjvf+YJasbidosiL4VSeRiCZ+HPzvKDb3wNeafoZA==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
这是我从浏览器访问时下载的CRL文件:
-----BEGIN X509 CRL-----
MIIBMjCBnDANBgkqhkiG9w0BAQUFADBtMR0wGwYDVQQKExRWaXRhbEhlYWx0aCBT
b2Z0d2FyZTElMCMGA1UECxMcVml0YWxIZWFsdGggU29mdHdhcmUgUm9vdCBDQTEl
MCMGA1UEAxMcVml0YWxIZWFsdGggU29mdHdhcmUgUm9vdCBDQRcNMTQwODA3MTQz …Run Code Online (Sandbox Code Playgroud) 我有以下简单的Sql Where,其中我正在DocumentDB中尝试使用,但无法使其在Query Explorer中工作:
SELECT * FROM root.DocumentDbTest_AllFieldTypes f
WHERE f.field1 NOT IN (
SELECT g.field1 FROM root.DocumentDbTest_AllFieldTypes g
WHERE g.time = "09:12:34"
);
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我执行此IN查询的正确语法吗?
我将以下XML保存到DocumentDB:
<DocumentDbTest_Countries>
<country>C25103657983</country>
<language>C25103657983</language>
<countryCode>383388823</countryCode>
<version>2015-08-25T08:36:59:982.3552</version>
<integrity>
<hash-algorithm>sha1</hash-algorithm>
<hash />
</integrity>
<context-info>
<created-by>unittestuser</created-by>
<created-on>2015/08/25 08:36:59</created-on>
<created-time-zone>UTC</created-time-zone>
<modified-by>unittestuser</modified-by>
<modified-on>2015/08/25 08:36:59</modified-on>
<modified-time-zone>UTC</modified-time-zone>
</context-info>
</DocumentDbTest_Countries>
Run Code Online (Sandbox Code Playgroud)
哪个可以保存到DocumentDB中,如下所示:
{
"DocumentDbTest_Countries": {
"integrity": {
"hash-algorithm": "sha1",
"hash": ""
},
"context-info": {
"created-by": "unittestuser",
"created-on": "2015/08/25 08:36:59",
"created-time-zone": "UTC",
"modified-by": "unittestuser",
"modified-on": "2015/08/25 08:36:59",
"modified-time-zone": "UTC"
},
"country": "C25103657983",
"language": "C25103657983",
"countryCode": 383388823,
"version": "2015-08-25T08:36:59:982.3552"
},
"id": "f917945d-eaee-4eff-944d-dae366de7be1"
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,列名确实在DocumentDB中保存了连字符( - )(显然没有任何类型的错误/异常/警告)但是当我尝试进行查找时,它在查询资源管理器中失败了.似乎没有办法搜索带连字符的列名.这是真的?或者,我错过了什么?有人可以指点我某个关于这个限制的文件吗?