Articles of 证书

“尝试加载证书的私钥时,指定了”无效的提供程序types“CryptographicException

我试图读取由第三方服务提供商与我共享的证书的私钥,所以我可以使用它来encryption一些XML,然后再通过线路发送给他们。 我是用C#编程的,但我认为这是一个权限或configuration错误的问题,所以我将重点放在似乎最相关的事实上: 我不认为这个问题是与代码有关的; 我的代码在其他计算机上工作,并且该问题影响来自Microsoft的示例代码。 该证书是作为PFX文件提供的,仅用于testing目的,因此还包含虚拟证书颁发机构。 使用MMC.exe,我可以将证书导入到本地计算机的个人存储中,然后授予所有相关帐户的私钥权限,并将证书颁发机构拖放到受信任的根证书颁发机构中。 使用C#,我可以加载证书(通过其指纹识别),并使用X509Certificate2.HasPrivateKeyvalidation它是否具有私钥。 但是,尝试读取密钥会导致错误。 在.NET中,在尝试访问属性X509Certificate2.PrivateKey时,将引发CryptographicException消息“Invalid provider type specified”。 在Win32中,调用方法CryptAcquireCertificatePrivateKey返回等效的HRESULT, NTE_BAD_PROV_TYPE 。 这是使用Microsoft自己的两个代码示例读取证书的私钥时也会发生的exception。 在当前用户(而不是本地计算机)的等价存储中安装相同的证书,允许私钥成功加载。 我在Windows 8.1本地pipe理员权限,我已经尝试在正常和高架模式下运行我的代码。 Windows 7和Windows 8上的同事已经能够从本地机器商店为同一证书加载密钥。 我可以成功读取位于同一商店位置的自签名IIStesting证书的私钥。 我已经瞄准了.NET 4.5(这个错误已经报告了一些旧版本的框架)。 我不认为这是证书模板的问题,因为我希望同时影响本地计算机和当前用户商店? 与我的同事不同,我曾多次尝试以各种方式卸载和重新安装证书,包括通过IISpipe理器,还包括来自同一发行人的较旧证书。 在MMC中看不到任何旧的或重复的证书的痕迹。 但是,我有许多相同大小的私钥文件,基于最后写入时间,在我进行各种安装尝试之后,必须留下。 这些可在以下位置find,分别为本地机器和当前用户存储: C:\ ProgramData \微软\encryption\ RSA \ MachineKeys的 c:\ Users \ \ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ S-1-5-21- [其余用户ID] 所以,任何人都可以请告知是否: 使用MMC卸载证书是一个好主意,删除所有那些看起来像孤立私钥的文件,然后重新安装证书并再试一次? 还有其他的文件,我应该尝试手动删除? […]

相当于Windows证书存储的Linux

是否有任何固定的或已知的位置在Linux中存储证书,如Windows证书存储? 谢谢。

将证书导入受信任的根,但不导入个人

我正在尝试使用命令行将两个证书导入到本地计算机。 我有一个证书添加到本地计算机的个人存储,另一个要添加到受信任的根证书颁发机构。 这里是个人存储的命令,不要在根目录下添加: certutil -f -importpfx CA.pfx NoRoot 并添加在受信任的根,而不是个人? 有没有标签? 我没有在命令帮助中find“/?”

便宜的Windows驱动程序签署64位Windows 7

我需要在Windows 7 64位机器上安装libusb-win32驱动程序。 这个驱动程序是开源的,所以它没有数字签名,所以我想自己做这个,但我不知道这是否可以付出很多钱。 是否可以使用未经Verisign或GlobalSign签名的证书? 也许自签名或通过使用StartSSL ? 如果是的话,我该怎么做呢? 根据一个关于x64内核驱动程序签名的实用真理 ,我必须使用“交叉证书”(微软列表中只有6个可用,大多数是不再活动的CA) 。 我不在乎用户是否面临警告信息。 我甚至可以接受,如果用户必须先安装一个特殊的CA证书。 我只要求驱动程序运行,而不必手动禁用每个Windows启动时的签名检查。

Windows中没有makecert的自签名证书?

我们有一个收缩包装types的Windows服务器应用程序,我们需要在服务器上创build一个WCF Web服务使用的自签名证书。 从我们在网上的search看来,来自Microsoft的PlatformSDK中的makecert工具不能与我们的应用程序一起分发,所以我们正在寻找替代scheme。 有谁知道如何使用OpenSSL来创build一个证书,并将其放入Windows LocalMachine证书存储? 或者,也可以直接将证书插入到.NET应用程序的商店中,我们是否应该使用openssl创build证书文件? 任何帮助/build议,将不胜感激。

将自签名的XAP部署到Windows Phone 8

我们为WP8开发了一个应用程序,并希望通过下载URL将其内部分发到XAP文件。 我们迄今采取的步骤: 使用Makecert.exe生成XXX.pvk(无密码)的自签名XXX.cer 使用Pvk2Pfx.exe创build一个包含私钥(带密码)的pfx文件, 使用XapSignTool.exe签署我们的XXX_Release.xap 我们还将XXX.cer部署到手机设备上,但仍然收到“无法安装公司应用程序”错误。 之后,我们尝试使用AetGenerator.exe生成应用程序注册令牌(AET)(不是100%确定,如果我们确实需要的话),从XXX.pfx退出时出现错误: 生成AET startIndex时发生的未知错误不能大于string的长度。 参数名称:startIndex 任何想法我们做错了什么或build议什么样的方式来分发这样的应用程序? 只有从赛门铁克获得证书,才有可能? 谢谢! PS:我刚刚浏览了MS文档和AETGenerator的PFX参数: 需要。 由Symantec提供的企业移动代码签名证书生成的PFX文件的名称。 所以很可能赛门铁克299美元/年的证书似乎是必需的。 这是否是正确的假设?

“代码签名”的Windows应用程序是不是容易受到病毒感染?

如果您使用代码签名证书签署了一个Windows(本机,而不是.NET)应用程序,是否以某种方式防止随后感染病毒? 很明显,如果你签署一个已经被感染的文件,你有一个问题…

C代码相当于C#来安装证书

我发现下面的代码将证书安装到本地机器可信发布者。 但代码是在C#我想要在C完成相同的。如何将其转换为C? private static void InstallCertificate(string cerFileName) { X509Certificate2 certificate = new X509Certificate2(cerFileName); X509Store store = new X509Store(StoreName.TrustedPublisher,StoreLocation.LocalMachine); store.Open(OpenFlags.ReadWrite); store.Add(certificate); store.Close(); } 任何Windows APIS可用?

在基于Linux的发行版上签署Windows应用程序

我准备了一个应用程序和网站,客户可以在下载之前为这个应用程序设置多个选项。 设置以二进制格式存储在文件末尾(附加),然后将编辑的文件发送给最终用户。 问题是文件“内容”的改变会破坏文件签名 – 是否有机会用任何命令行工具重新签名这个改变的文件? 我试图使用微软的SignTool,但在Linux上无法正常工作。

将Android开发人员从Linux切换到Windows:工具链签名APK有所不同?

我已经在Linux和Eclipse上开发了我的Android应用程序一年了。 决定切换到Windows出于多种原因。 跳过所有的箍,现在有我的应用程序的build设,并在Windows出口罚款。 ADT接受并使用我的开发者证书 – 存储密码和密钥密码正常工作。 由此产生的应用程序安装在真实设备上的罚款,似乎签署罚款,但Android电子市场不会接受上传的应用程序更新与以下错误: “apk必须使用与以前版本相同的证书进行签名” 回到Linux,我生成的APK可以上传罚款。 显然,工具链正在生成不同的二进制文件。 使用差异validation。 我在两个平台上使用相同版本的Java。 我正在使用相同的密钥库和相同的密码进行导出。 在运行jarsigner -verify我得到以下内容: 视窗: X.509, O=VoltUp, C=US [certificate is valid from 11/17/10 10:28 AM to 10/24/10 11:28 AM] Linux的: X.509, O=BatteryStorm Mobile Inc, C=US [certificate is valid from 10/25/10 12:04 AM to 10/17/40 12:04 AM] 所以显然O =已经改变了。 这怎么可能?