当我使用openssl API验证服务器证书(自签名)时,我收到以下错误:
错误19在1深度查找:证书链中的自签名证书
根据openssl 文档,这个错误(19)是
"X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:证书链中的自签名证书 - 可以使用不受信任的证书构建证书链,但无法在本地找到根证书."
为什么会出现此错误?我的服务器证书有问题吗?
我有一个工作单元实施,其中包括以下方法:
T Single<T>(Expression<Func<T, bool>> expression) where T : class, new();
Run Code Online (Sandbox Code Playgroud)
我打电话给它,例如,像这样:
var person = _uow.Single<Person>(p => p.FirstName == "Sergi");
Run Code Online (Sandbox Code Playgroud)
如何验证Single方法是否已使用参数调用FirstName == "Sergi"?
我试过以下,但无济于事:
// direct approach
session.Verify(x => x.Single<Person>(p => p.FirstName == "Sergi"));
// comparing expressions
Expression<Func<Person, bool>> expression = p => p.FirstName == "Sergi");
session.Verify(x => x
.Single(It.Is<Expression<Func<Person, bool>>>(e => e == expression));
Run Code Online (Sandbox Code Playgroud)
它们都会导致以下错误:
模拟上的预期调用至少一次,但从未执行过
关于如何做到这一点的任何想法?我正在使用NuGet 的最新Moq,版本4.0.10827.0
更新:一个具体的例子
我所看到的是每当我在lambda中使用字符串文字时,都Verify可以工作.一旦我比较变量就失败了.例证:
// the verify
someService.GetFromType(QuestionnaireType.Objective)
session.Verify(x => x.Single<Questionnaire>(q =>
q.Type == QuestionnaireType.Objective));
// …Run Code Online (Sandbox Code Playgroud) 如何确保函数真的是随机的或尽可能接近概念?另外,随机和伪随机有什么区别?最后,可以使用哪些算法/源来生成随机数?
PS:也问这个,因为使用的MySQL语句ORDER BY RAND() LIMIT 1没有给出令人信服的结果.
我正在使用Selenium RC使用Java与eclipse和TestNG框架.我有以下代码片段:
assertTrue(selenium.isTextPresent("Please enter Email ID"));
assertTrue(selenium.isTextPresent("Please enter Password"));
Run Code Online (Sandbox Code Playgroud)
第一个断言失败,执行停止.但我想继续进一步的代码片段.
我正在验证是否使用Mockito调用了一个函数,但是Mockito告诉我,我正在验证的函数从未被调用,并且其他函数被调用.但在我看来,我正在调用正确的功能......
这是我得到的错误的堆栈跟踪:
Wanted but not invoked:
relationshipAutoIndexer.getAutoIndex();
-> at org.whispercomm.manes.server.graph.DataServiceImplTest.testInitIndices(DataServiceImplTest.java:117)
However, there were other interactions with this mock:
-> at org.whispercomm.manes.server.graph.DataServiceImpl.updateIndexProperties(DataServiceImpl.java:136)
-> at org.whispercomm.manes.server.graph.DataServiceImpl.updateIndexProperties(DataServiceImpl.java:144)
-> at org.whispercomm.manes.server.graph.DataServiceImpl.updateIndexProperties(DataServiceImpl.java:148)
-> at org.whispercomm.manes.server.graph.DataServiceImpl.updateIndexProperties(DataServiceImpl.java:149)
-> at org.whispercomm.manes.server.graph.DataServiceImpl.initIndices(DataServiceImpl.java:121)
at org.whispercomm.manes.server.graph.DataServiceImplTest.testInitIndices(DataServiceImplTest.java:117)
Run Code Online (Sandbox Code Playgroud)
它出现在
verify(relAutoIndexer).getAutoIndex();
Run Code Online (Sandbox Code Playgroud)
下面显示的测试类代码.
这是我的代码(我倾向于意外地将事情遗漏.请问我任何你认为我缺少的代码,我会添加它):
public DataServiceImpl(GraphDatabaseService graphDb) {
super();
this.graphDb = graphDb;
unarchivedParent = new UnarchivedParent(graphDb.createNode());
archivedParent = new ArchivedParent(graphDb.createNode());
packetParent = new PacketParent(graphDb.createNode());
userParent = new UserParent(graphDb.createNode());
this.initIndices();
}
/**
* Initializes the node and relationship indexes.
*
* Updates the set of indexed …Run Code Online (Sandbox Code Playgroud) 我写了一个应用程序,我想在网上销售它,所以我上传到我的网站并尝试下载并运行它作为测试,但是出现了一个窗口,它说:"发布者无法验证.你确定你想运行这个软件吗?",它还说:"出版商:未知出版商".它实际上是一个包装在exe文件中的自签名Java jar文件,我用Netbeans6.7自行签名.
我想知道如何才能成为"知名"出版商?
坦率
我的程序包含我知道并信任的2个根证书.我必须验证信任中心的证书和信任中心颁发的"用户"证书,这些证书都来自这两个根证书.
我使用X509Chain类进行验证,但只有在根证书位于Windows证书库中时才有效.
我正在寻找一种方法来验证证书而不导入根证书 - 以某种方式告诉X509Chain类我确实信任这个根证书,它应该只检查链中的证书而没有别的.
实际代码:
X509Chain chain = new X509Chain();
chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
chain.ChainPolicy.ExtraStore.Add(root); // i do trust this
chain.ChainPolicy.ExtraStore.Add(trust);
chain.Build(cert);
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个.NET 2.0 Winforms应用程序.
我正在尝试为学习目的做一个小型安全HTTPS客户端,看看SSL的所有机制现在如何在更高层次上工作,所以我试图通过ssl.wrap_socket将一个简单的套接字转换为ssl.
我可能倒退了整个概念但是,这就是我正在做的事情:
s.connect((host, port))
if port == 443:
f = open('cacerts.txt', 'r')
calist = f.read()
f.close()
ca = ssl.get_server_certificate((host, port), ssl_version=ssl.PROTOCOL_SSLv3|ssl.PROTOCOL_TLSv1)
if not ca in calist:
f = open('cacerts.txt', 'a')
f.write(ca)
f.close()
s = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_SSLv3|ssl.PROTOCOL_TLSv1, cert_reqs=ssl.CERT_REQUIRED, ca_certs="cacerts.txt")
s.do_handshake()
Run Code Online (Sandbox Code Playgroud)
当我调用do_handshake()时,我得到了这个:
Traceback (most recent call last):
File "SSL_test.py", line 84, in Requester
s = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_SSLv3|ssl.PROTOCOL_TLSv1, cert_reqs=ssl.CERT_REQUIRED, ca_certs="cacerts.txt")
File "C:\Python26\lib\ssl.py", line 338, in wrap_socket
suppress_ragged_eofs=suppress_ragged_eofs)
File "C:\Python26\lib\ssl.py", line 120, in __init__
self.do_handshake()
File "C:\Python26\lib\ssl.py", line 279, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [Errno …Run Code Online (Sandbox Code Playgroud) 我在编程的简短知识中尝试了所有我理解的东西.
当我输入"bundler install"时,我得到"证书验证失败"(我已经检查了证书,它已更新)然后它最终以"确保"宝石安装[宝宝的名字] -v [版本]在捆绑之前成功."
所以我决定安装Gem-per-Gem,而不是试图解决他们的证书问题.
这会有用吗还是我只是在浪费时间?