标签: digital-certificate

对具有引用程序集的应用程序进行数字签名的正确方法

我有一个具有1个引用程序集的应用程序(test.exe,test.dll)

我想要的是在test.exe运行时,它应该将发布者名称显示为"TestCompany".

为此,我对它进行了数字签名,它就是我想做的.如果我改变test.exe发布者名称的一个字节是"未知".这很好.

但是,如果我改变了test.dll,应用程序运行时没有任何反应,并将发布者名称显示为"TestCompany".哪个对我不好.

所以我把强名称放在app.config中test.dll并添加<bypassTrustedAppStrongNames enabled="false" />.

再一次,没有区别.所以我再次搜索并发现bypassTrustedAppStrongNames只检查程序集是否具有强名称.不是验证.这对我来说再好不过了.

我真正想要的是保护用户,而不是我的应用程序.如果用户运行我的应用程序并且它从我这里说出来,它必须来自我的每个字节.如果应用程序被更改,即使是单个字节,它也必须通知用户,而不是来自我.这是数字签名与强名称一起做的,但它们似乎都不是那么好.或者我错过了什么?

我能想到的最后一种可能的方法是手动检查程序集的强名称.

PS:目标.net框架是2.0

.net c# strongname digital-certificate .net-assembly

21
推荐指数
1
解决办法
583
查看次数

如何以编程方式验证程序集是否使用特定证书进行签名?

我的方案是我们有一个程序(exe),如果在特定文件夹中找到,将启动其他程序.我想确保它只启动使用我们的公司证书(Verisign批准等)签署的计划.从本质上讲,它只会以与自身相同的证书启动程序.我不想发送证书本身.

我一直在搜索网络和系统名称空间,并没有找到一个明确的例子,从文件中读取证书数据并验证它,并可以检查另一个文件.我发现的最接近的是Signtool,并且在单独的exe中进行此验证有点少.我知道强命名的东西不会有帮助,因为数字签名的文件是不同的,如此处有用的解释(http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly- dl-is-strong-named /)SO中的其他一些示例显示了原始数据的加密和验证,但没有以某种方式将它打包在一起的程序集.

任何想法或建议?

.net c# digital-certificate assembly-signing

19
推荐指数
1
解决办法
2万
查看次数

在C#中,使用x.509证书签署xml并检查签名

我正在尝试使用x.509证书签署XML文件,我可以使用私钥对文档进行签名,然后使用CheckSignature方法(它具有接收证书作为参数的重载)来验证签名.

问题是验证签名的用户必须拥有证书,我担心的是,如果用户拥有证书,那么他可以访问私钥,据我所知,这是私有的,应该只对用户可用谁签字.

我错过了什么?

谢谢你的帮助.

c# xml digital-certificate digital-signature x509certificate2

17
推荐指数
2
解决办法
3万
查看次数

使用java代码将证书添加到密钥库

我正在尝试使用服务器的.cer证书文件建立https连接.我可以使用浏览器手动获取证书文件,并使用keytool将其放入密钥库.然后,我可以使用java代码访问密钥库,获取我添加到密钥库的证书并连接到服务器.

我现在想要实现获取证书文件并使用java代码将其添加到我的密钥库并且不使用keytool或浏览器来获取证书的过程.

有人可以告诉我如何处理这个以及我需要做什么?

java https digital-certificate keytool ssl-certificate

17
推荐指数
1
解决办法
2万
查看次数

keytool - 查看公钥和私钥

我以编程方式创建了类型为jks的Java密钥库(即默认类型).
它最初是空的,所以我创建了一个DSA证书.

keytool -genkey -alias myCert -v -keystore trivial.keystore
Run Code Online (Sandbox Code Playgroud)

我怎样才能看到公钥和私钥?
即是否有一个命令打印我的证书的私钥?
我只能keytool -certreq在我的理解中找到整个证书:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIICaTCCAicCAQAwZTELMAkGA1UEBhMCR1IxDzANBgNVBAgTBkdyZWVjZTEPMA0GA1UEBxMGQXRo
BQADLwAwLAIUQZbY/3Qq0G26fsBbWiHMbuVd3VICFE+gwtUauYiRbHh0caAtRj3qRTwl
-----END NEW CERTIFICATE REQUEST-----
Run Code Online (Sandbox Code Playgroud)

我认为这是整个证书.如何通过keytool查看私人(或公钥)?

java security digital-certificate keystore keytool

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

Python:使用pyOpenSSL.crypto读取pkcs12证书

我有西班牙当局(FNMT)颁发的有效证书,我想玩它以了解更多相关信息.该文件的扩展名为.p12

我想阅读其中的信息(名字和姓氏)并检查证书是否有效.用pyOpenSSL可以做到吗?我想我必须在OpenSSL中使用加密模块.任何帮助或有用的链接?试着在这里阅读:http://packages.python.org/pyOpenSSL/openssl-crypto.html但信息不多:-(

python openssl cryptography pyopenssl digital-certificate

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

如何使用Javascript WebCrypto API加载PKCS#12数字证书

我正在尝试使用WebCrypto API签名数据,但是我不想创建私钥/公钥并将其导出到pkcs#1或8,我真的想使用用户的PKCS#12来签署数据.我已经阅读了W3C规范,但不能做很多,也找不到任何关于如何做到这一点的好材料.现在我想把ActiveX和Java小程序放在一边.有没有办法调整以下内容:

var buffer = encode(prompt("Please enter your password"));
    //TODO:
    //implement a prompt for a pfx or cert

  return crypto.subtle.importKey("raw", buffer, "PBKDF2", false, usages);
    //TODO:
    //instead of importing it, ask for the certificate's pass to sign data
    //with crypto.subtle.sign
Run Code Online (Sandbox Code Playgroud)

有什么指针吗?

更新 这是我一直在工作的代码

<script src="forge.min.js"></script>

<script>
    var errorsReportedByVerifier;
    errorsReportedByVerifier = checkStorage() && checkBrowserAPIs();
    if (!errorsReportedByVerifier){
        console.log("adding click event");
        document.getElementById('btnPfx').addEventListener('click', handlePFXFile, false);
        storeVariables();
        getVariables();
    }


    function handlePFXFile(evnt) {
        console.log("handling pfx")
        //alert(document.getElementById('pfx').value);

        //error happens in 1st line
        //error object does not accept property …
Run Code Online (Sandbox Code Playgroud)

javascript digital-certificate digital-signature webcrypto-api

15
推荐指数
1
解决办法
8620
查看次数

是否可以免费签署一个Java小程序?

我制作了一个奇怪的小程序,可以让你用你的声音画画.显然它需要访问麦克风,但Java小程序不允许访问,除非它们已签名.据我所知,它很难并且涉及密码学,虽然不清楚,但我认为我也应该向Verisign支付金钱.这一切似乎都是很多偏执的创新,让我感到闷闷不乐,我认为我不是第一个这么想的人.

有没有办法绕过这个"用于教育或测试目的?" 或者可能在我的浏览器中关闭安全性?或免费签署小程序?

我使用的是Firefox 3.0.15和Java 1.6.0的Ubuntu 9.04

java digital-certificate jar-signing signed-applet

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

m_safeCertContext是一个无效的句柄

我一直在努力解决问题,也许你们可以指出我正确的方向.

我正试图通过https连接在网络服务器上对pdf进行数字签名.

在页面加载时我正在这样做:

HttpClientCertificate cs = Request.ClientCertificate;
X509Certificate card = new X509Certificate(cs.Certificate);
Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
 Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(card.GetRawCertData())};
Run Code Online (Sandbox Code Playgroud)

我在最后一行代码中收到错误"m_safeCertContext是一个无效的句柄".

请注意:

  • 我使用2个完全不同的证书得到同样的错误.
  • 证书正被检索到"卡"变量ok.
  • 我以前把卡拿到了X509Certificate2,但我昨天在某处读到了我无法通过转换为X509Certificate然后向下转换到X509Certificate2来解决错误.这是其中之一"嗯......这没有任何意义,但我还没有尝试过"的时刻.
  • 我试图将[System.Security.SecurityCritical, System.Security.SecurityTreatAsSafe]属性添加到所有方法甚至类中以查看它是否可行...没有这样的运气.

任何人都可以给我一个暗示吗?

c# digital-certificate digital-signature

13
推荐指数
1
解决办法
2万
查看次数

如何将数字证书添加到SingleImage Install Shield安装程序

我在Visual Studio 2012中使用限制版本的Install Shield创建了一个安装程序.

我有一个数字证书,我想添加到安装程序.

我想使用Install Shield的SingleImage功能创建并向我的客户提供单个安装文件(例如setup.exe).但是,似乎我必须通过Install Shield将数字证书附加到一个msi文件中,该文件嵌入在setup.exe中.

我发现在运行安装程序时,将数字证书放在setup.exe上会导致告知用户发布者是未知的.如果换句话说,那就是没有正确部署数字证书.

我可以访问msi文件以向其添加数字证书吗?如果是这样,怎么样?

ssl installshield digital-certificate

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