小编jos*_*hk0的帖子

无法理解SSL证书链验证

我的应用程序使用SSL与服务器安全通信,并且无法验证证书链.链看起来像这样:

Entrust.net安全服务器认证机构 - > DigiCert Global CA - >*.ourdomain.com

我们正在使用从Mozilla取出的证书商店.它包含Entrust.net证书,但不包含DigiCert Global CA证书.

我的理解是,只要根权限是,但不必信任中间权限,但验证失败:

% openssl verify -CAfile mozilla-root-certs.crt ourdomain.com.crt
error 20 at 0 depth lookup:unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)

那么我需要明确信任DigiCert Global CA才能通过验证吗?这似乎是错的.但是你告诉我!

编辑:我现在明白证书文件需要预先提供给OpenSSL.像这样的东西有效:

% openssl verify -CAfile mozilla-root-certs.crt -untrusted digicert.crt ourdomain.com.crt
ourdomain.com.crt: OK
Run Code Online (Sandbox Code Playgroud)

这允许我提供DigiCert CA的副本而不明确说"我相信它",整个链仍然需要验证.

但是,像Firefox这样的浏览器肯定不会附带它所需要的每个证书的副本.总会有新的CA,重点是使用根证书的安全性来确保所有中间CA都有效.对?那么,如何这项工作?它看起来真的很傻吗?

openssl ssl-certificate

35
推荐指数
2
解决办法
5万
查看次数

文件句柄上的WaitForSingleObject?

当您WaitForSingleObject()使用CreateFile()或创建的句柄呼叫时会发生什么_get_osfhandle()

至于原因,不值得说明的是我想用WaitForSingleObject()伺候,我已经与创建句柄_get_osfhandle(fd),其中fd来自一个普通呼叫_open().这可能吗?

我在实践中尝试了它,并且在某些机器上它按预期工作(HANDLE总是处于信号状态,因为你可以从中读取更多数据),并且在某些机器上WaitForSingleObject()如果你允许它将无限期地阻塞.

MSDN页面WaitForSingleObject()表示它处理的唯一受支持的东西是"更改通知,控制台输入,事件,内存资源通知,互斥锁,进程,信号量,线程和可等待的计时器".

另外,如果我使用CreateFile()而不是_get_osfhandle()CRT文件描述符,它会有所不同吗?

windows msvcrt

15
推荐指数
2
解决办法
7114
查看次数

WinVerifyTrust检查特定签名?

我正在为Windows实现进程提升助手.这是一个将以提升模式运行并使用管理员权限启动其他程序而不显示其他UAC提示的程序.出于安全原因,我想确保只能执行使用我公司的Authenticode密钥进行数字签名的二进制文件.

的WinVerifyTrust函数获取我中途有,但它只是确保了二进制通过签署一些关键的就是信任的微软链的一部分.是否有一种相对简单的方法来执行Authenticode验证并确保它是由我们的私钥签名的?

c windows digital-signature winverifytrust

12
推荐指数
3
解决办法
1万
查看次数

检测移动到Mobile Safari中的新选项卡

我有一系列打开弹出窗口的页面(Mobile Safari中的新标签.)这些弹出窗口中的每一个都需要知道它们何时成为焦点.在桌面上,我们使用window.onblurwindow.onfocus驱动此行为.但是,这些事件都不适用于iPad.我也试过window.onpageshow,window.onpagehide似乎也没有在正确的时间开火.我有一个测试HTML文件:

<html>
<head>
<script language="javascript">
console.log('Hello');
window.onblur = function(e) { console.log('blur'); };
window.onfocus = function(e) { console.log('focus'); };
window.onpagehide = function(e) { console.log('pagehide'); };
window.onpageshow = function(e) { console.log('pageshow'); };
</script>
</head>
<body>
<a href="http://www.google.com" target="_blank">Click Me</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

理论上,当您单击"单击我"时,您应该在出现新窗口时出现模糊事件.但这不会发生在Mobile Safari上.onpagehide并且也onpageshow没有表现出爱,它们只能帮助您检测何时关闭标签.

如何在Mobile Safari中获取我正在寻找的行为?有可能吗?

javascript iphone mobile-safari ipad ios

7
推荐指数
2
解决办法
8096
查看次数

LogonUser - >来自系统服务的CreateProcessAsUser

我已经阅读了有关CreateProcessAsUser的Stack Overflow上的所有帖子,并且解决的问题很少,所以我不会屏住呼吸.但似乎我肯定错过了一些东西,所以它可能很容易.

目标操作系统是Windows XP.我有一个运行为"本地系统"的服务,我想从中创建一个以不同用户身份运行的进程.对于该用户,我有用户名和密码,因此LogonUser正常,我获得了用户的令牌(在这种情况下,是管理员帐户.)然后我尝试使用该令牌调用CreateProcessAsUser,但它失败,因为该令牌没有SeAssignPrimaryTokenPrivilege - 但是,它确实有SeIncreaseQuotaPrivilege.(我使用GetTokenInformation转储与该令牌关联的所有权限.)根据CreateProcessAsUser的MSDN页面,您需要两个权限才能成功调用CreateProcessAsUser.

它还说你不需要SeAssignPrimaryTokenPrivilege,如果传入CreateProcessAsUser()的令牌是"调用进程'主要令牌的受限版本",我可以用CreateRestrictedToken()创建它,但是它会与之关联本地系统用户而不是我正在尝试运行该进程的目标用户.

那么我如何创建一个登录令牌,它既是调用进程的主要令牌的受限版本,又与另一个用户相关联?谢谢!

请注意,这里不需要用户交互 - 它都是无人值守的 - 所以不需要像抓取WINSTA0等那样做.

windows winapi windows-services createprocessasuser

5
推荐指数
1
解决办法
4884
查看次数

为具有一种方法的IE编写简单的ActiveX控件

我正在学习如何编写可编写脚本的ActiveX控件.我的目标是有一个微小的控件,可以检查系统上是否安装了某些东西.到目前为止我所做的是:

  • 在VS2008中创建MFC ActiveX控件项目
  • 添加一些我在这里找到的'安全的脚本'位.
  • 扩展IDL以提供我的"IsInstalled"方法,该方法现在无条件地返回TRUE(但稍后会从注册表中读取一些键.)
  • 构建控件并在其上运行regsvr32.我确认它确实显示在HKEY_CLASSES_ROOT中,当我实例化该对象时,IE Developer Tools"Locals"窗格显示该对象的类型为_D [我的插件名称].不仅如此,我的IsInstalled()方法显示在该对象下面.

但是,当我调用IsInstalled()时,我无法让它工作:

JScript调试器 - 打破JScript运行时错误 - (n http://img138.imageshack.us/img138/1586/whycomwhy.png

我不知所措.我也试过让IsInstalled成为一个属性而不是一个方法,在IDL中使用VARIANT_BOOL代替boolean而不是BOOL,你可以命名它.

这是相关的代码摘录.

标题:

afx_msg VARIANT_BOOL IsInstalled();
Run Code Online (Sandbox Code Playgroud)

实施:

afx_msg VARIANT_BOOL
CMyAXCtrl::IsInstalled()
{
   return TRUE;
}
Run Code Online (Sandbox Code Playgroud)

发货地图:

BEGIN_DISPATCH_MAP(CMyAXCtrl, COleControl)
   DISP_FUNCTION_ID(CMyAXCtrl, "IsInstalled", dispidIsInstalled, IsInstalled, VT_BOOL, VTS_NONE)
END_DISPATCH_MAP()
Run Code Online (Sandbox Code Playgroud)

IDL的发送部分:

   [ uuid(6B662202-CF13-4144-AA33-C3FEE9C2C962),
      helpstring("Dispatch interface for My Control")]
   dispinterface _Daxplugin
   {
   properties:
   methods:
      [id(1)] VARIANT_BOOL IsInstalled();
   };
Run Code Online (Sandbox Code Playgroud)

如果我应该提供任何其他相关的代码,请告诉我.但我很难过.先感谢您!

c++ com activex visual-studio-2008

5
推荐指数
1
解决办法
1920
查看次数

解析 /usr/sbin/installer 的输出

我正在编写基本上是许多平台上安装程序服务的前端。我(显然)想知道的一件事是安装是否成功。在大多数平台上,这很简单:只需检查安装程序的返回代码/退出代码即可。但是,在 Mac 上(使用/usr/sbin/installer)就不是那么容易了,因为它总是退出 0,并且您必须解析输出(在提供-verboseR选项之后)才能确定它是成功还是失败。

我只是通过反复试验来解决这个问题,但我发现很难设计自己的包,例如,损坏的包,以弄清楚当包以某种方式损坏时系统会说什么。

所以我问,亲爱的 Lazyweb:是否有一个规范的解析器用于 的输出/usr/sbin/installer -verboseR,或者至少有一个描述它输出的东西种类的指南?我找到了this,这有帮助,但并没有让我一路走好。一定有更好的东西;这似乎是一项常见的任务。

macos installation

4
推荐指数
1
解决办法
1053
查看次数

QWizard中的异步验证

我正在编写一个基于QWizard Qt对象的向导UI.在某种特殊情况下,我希望用户使用主机,用户名和密码登录服务.然后,向导的其余部分操纵此服务以执行各种设置任务.登录可能需要一段时间,尤其是在DNS名称需要很长时间才能解决的错误情况下 - 或者甚至可能根本无法解决.

所以我的想法是使用registerField机制强制所有三个字段,当用户点击Next时,我们在向导页面上显示一个小小的悸动,说"连接到服务器,请稍候......",同时我们尝试连接到背景.如果连接成功,我们将进入下一页.如果没有,我们会突出显示有问题的字段并要求用户重试.

但是,我对如何实现这一点感到茫然.我想到的选项:

1)覆盖validatePage并让它在后台启动一个线程.在validatePage()内输入一个等待,它将Qt事件循环泵出,直到线程结束.你认为这是最丑陋的解决方案,但......

2)隐藏真正的下一个按钮并添加一个自定义的下一个按钮,当单击该按钮时,在一个线程中调度我的长时间运行功能,并等待一个"验证完成"信号被某些东西引发.当发生这种情况时,我们手动调用QWizard :: next()(我们完全绕过了validatePage和朋友的真实验证逻辑.)这甚至更加丑陋,但将丑陋移到了可能使开发更容易的不同层次.

当然有更好的方法吗?

qt qt4 wizard

0
推荐指数
1
解决办法
1004
查看次数