标签: digital-signature

使用数字签名生成PDF

是否可以使用数字签名在PHP中生成PDF文件?开源解决方案是首选.

php pdf-generation digital-signature

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

在Ruby中规范化XML

我正在使用Ruby/Rails开发SAML网关,并且我正在尝试编写一些代码来验证传入SAML响应的xml数字签名与原始服务的x509证书.

我的问题:签名依赖于XML的规范化版本被散列,然后签约,我无法找到一个Ruby的lib /宝石,将规范化每个XML 规范.我在rubyforge上发现了一个超级旧的宝石,但是如果像nokogiri这样的功能支持这种功能我会更感兴趣(来自nokogiri docs,它没有).

我已经广泛搜索过了,但我想在这里问一下是否有人有任何好的见解,然后再尝试编写我自己的版本或重新编写现有的c14n-r库.

ruby xml saml digital-signature

10
推荐指数
1
解决办法
3704
查看次数

验证Authenticode签名是否来自我们公司的自动更新程序

我正在实现自动更新功能,并需要一些有关如何使用最佳实践安全地执行此操作的建议.我想使用下载文件的Authenticode签名来验证它是否可以安全运行(即来自我们公司并且没有被篡改).我的问题与问题#2008519非常相似.

最底线的问题:检查自动更新功能的Authenticode签名的最佳,最安全的方法是什么?应检查证书中的哪些字段?要求是:(1)检查签名是否有效,(2)检查签名是否有效,(3)旧客户仍然可以在我的证书到期时更新,我得到一个新签名.

以下是我研究的一些背景信息/想法:我相信这可以分为两个步骤:

  1. 验证签名是否有效.我相信这应该很容易使用WinVerifyTrust,如http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx中所述 - 我不认为这里有问题.

  2. 验证签名是否与我们公司相对应,而不是其他公司.这似乎是一个更难回答的问题:

一种可能性是检查签名中的一些字符串.可以通过MS KB文章#323809的代码获得,但是本文不会就应该为这种类型的应用程序(或任何其他类似的)检查哪些字段提出建议. 问题#1072540还说明了如何获取某些证书信息,但同样不建议实际检查哪些字段.我担心的是字符串可能不是最好的检查:例如,如果另一个人能够获得具有相同名称的证书,该怎么办?或者,如果我们有正当理由在将来更改字符串?

问题的人#2008519有一个非常相似的要求.他对"TrustedByUs"功能的需求与我的相同.但是,他通过比较公钥来进行检查.虽然这可以在短期内起作用,但似乎它不适用于自动更新功能.这是因为代码签名证书最长有效期为2 - 3年.因此,在将来,当我们在2年内购买新证书时,由于公钥的更改,旧客户将无法再更新.

c windows cryptography authenticode digital-signature

10
推荐指数
1
解决办法
1615
查看次数

对SQL Server数据库记录或插入/更新操作进行数字签名

有没有办法以某种方式用特定用户的证书或AD凭证等以数字方式对数据库记录或特定字段的当前状态进行签名?我需要实现某种记录级别的批准,其中特定字段或字段或行的正确性和有效性由用户名/密码组合或某些证书签名.数据应始终在记录中可见,我所需要的只是能够告诉:谁和何时批准数据.我不需要阻止状态更改(锁定),只需要验证当前状态是否已签名.

sql-server digital-signature

10
推荐指数
2
解决办法
6717
查看次数

Chrome下的数字签名小程序的替代方案

目前我们已经开发出一个可以使用java applet对文档进行数字签名的系统.然而,由于禁止使用chrome,我们正在寻找替代数字签名解决方案.

目前签署的工作方式如下:

  1. HTTP GET被发送到servlet以获取将要签名的文档;
  2. 小程序启动,数字签名驱动程序从文件系统中提取,用户输入PIN;
  3. applet获取认证链,检查CRL/OSCP并签署文档;
  4. applet将已签名文件的多部分帖子发送到系统中的servlet.

一种替代解决方案是在浏览器中导入证书并使用js进行签名.但这不是一个用户友好的解决方案.

另一个解决方案可能是要求用户使用JNLP下载运行程序,该程序下载并签署文档并使用HTTP多部分POST自动上载它.这种方法的缺点是它需要额外的用户交互(下载操作)而我们丢失浏览器http会话,因此我们必须再次进行身份验证.

哪个更可行?你能想到另类吗?

java applet google-chrome digital-signature

10
推荐指数
1
解决办法
2688
查看次数

PKCS#7签名验证

我正在尝试实施PDF的签名验证.这是一个很大的话题,所以我一步一步,首先我试图在我自己签名的PDF的情况下实际返回一个正面,使用当前Acrobat的所有默认值 - 应该是SHA256用于摘要,以及PKCS7分离签名.因此,我破解了openssl,并通过读取PDF中给出的字节范围并调用SHA256_*函数,我有一个哈希值来进行比较.所以现在我需要阅读证书数据等,并使用这些PKCS7_*功能.这个看起来是我想要的那个:

int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, BIO *indata, BIO *out, int flags);
Run Code Online (Sandbox Code Playgroud)

文档中所示.除了上述文档没有告诉我如何构建任何这些东西.好吧,所以我认为BIO *indata可以使用这里的一些函数和使用这些函数的证书数组(尽管没有计算出精确的细节),但是PKCS7 *p7,或者被STACK_OF(x)调用的是什么.我找不到任何记录的初始化这些结构的方法.pkcs7.h标题中有一些pkcs7_ctrl函数: -

long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);

int PKCS7_set_type(PKCS7 *p7, int type);
int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst);
int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
int PKCS7_add_signer(PKCS7 *p7, …
Run Code Online (Sandbox Code Playgroud)

c security openssl digital-signature pkcs#7

9
推荐指数
1
解决办法
3722
查看次数

"不支持LTV"是什么意思?

我正在使用iText 5.5.3对PDF文档进行签名和加时间戳.它工作得很好.但我最近从Acrobat Pro X切换到XI,现在我看到了这个新行:

the signature is not LTV enabled and will expire after <date>
Run Code Online (Sandbox Code Playgroud)

我想这会警告我,在此日期之后,签名者的签名将被视为无效,对吧?但是签名属性告诉我:

the signature includes an embedded timestamp : <date/time>
signature was validated as of the secure timestamp time : <same date/time>
Run Code Online (Sandbox Code Playgroud)

现在我有点困惑:由于签名在已知且经过认证的日期被宣布有效,为什么它将来会变得无效?

pdf cryptography itext digital-signature

9
推荐指数
1
解决办法
7159
查看次数

使用自签名证书验证Authenticode

如果我有一个不在机器的受信任根证书存储区中的自签名证书,如何在不将该证书添加到受信任的根存储区的情况下验证PE文件是否使用该证书进行了Authenticode签名?

C#是首选,但C++中的答案也很好.

StackOverflow上已经有很多类似的问题,但到目前为止还没有一个可以接受的答案.它必须是Authenticode,我无法将其添加到证书存储区.它也不能是购买的证书,因为它需要更长的有效时间(不论时间戳).

除了复制一大块Mono签名检查代码之外,我不知道Win32或.NET中的解决方案.

code-signing self-signed authenticode digital-signature

9
推荐指数
1
解决办法
285
查看次数

APK文件的META-INF文件夹中的文件的用途是什么?

在Android APK的META-INF文件夹中MANIFEST.MF,CERT.SFCERT.RSA文件的目的是什么?

android digital-signature apk

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

OpenSSL:RSA中使用私钥加密并使用公钥解密

我想使用 OpenSSL 和 RSA 算法用私钥加密文件:

openssl rsautl -in txt.txt -out txt2.txt -inkey private.pem -encrypt
Run Code Online (Sandbox Code Playgroud)

现在如果我进行解密操作:

openssl rsautl -in txt2.txt -pubin -inkey public.pem -decrypt
Run Code Online (Sandbox Code Playgroud)

此操作需要私钥

我知道我应该使用公钥来加密,如果我使用私钥,我就会得到签名。

但是,我想这样做是为了学习。

encryption rsa signature digital-signature

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