首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要什么样的证书才能制作和签署我自己的数字签名证书?

我需要什么样的证书才能制作和签署我自己的数字签名证书?
EN

Security用户
提问于 2011-08-30 09:28:53
回答 1查看 1.4K关注 0票数 3

在程序的构建时,我希望生成一个新的密钥对,并创建一个将被嵌入(安全)到程序中的证书。密钥对的目的是对XML文档进行数字签名。我希望与密钥对关联的链一直到我在构建机器上拥有的证书,然后一直到在构建机器上签署证书的CA。

SSL证书足够好吗?还是密码签名证书?或者,我需要从CA请求某种特定类型的证书,然后才能从CA获得证书?

EN

回答 1

Security用户

回答已采纳

发布于 2011-08-30 12:27:49

证书“必须”具有验证人员所要寻找的特征。“验证者”是指任何系统,它将查看您的签名和证书,并试图确定该签名是否可以接受。

大多数处理X.509证书的验证程序都应用X.509标准和因特网X.509配置文件规定的规则。有许多这样的规则;最重要的是:

  • 验证器将需要构建一个路径(或链)来获取它知道的公共密钥(信任锚),直到end实体证书,该证书包含与用于签名XML文档的私钥相关联的公钥。
  • 在路径中,每个证书(最后一个除外)用于验证下一个证书上的签名。每个这样的证书都必须具有"CA“位集的基本约束扩展,将证书标记为CA,即适合于验证路径中下一个证书上的签名。商业CA通常拒绝颁发CA位设置的证书,或者以高昂的价格这样做,因此您的“构建机器上的证书”很可能不是CA证书。
  • 任何证书都可能有密钥使用扩展,其中详细说明了证书中公钥的允许使用。要正确地与公共验证器进行互操作,用于签名XML文档的EE证书应该具有设置了digitalSignaturenonRepudiation标志的密钥使用扩展(或者根本没有密钥使用扩展)。证书是否是“SSL证书”或“代码签名证书”或任何其他此类名称,主要取决于在其密钥使用扩展中设置了哪些标志。
  • 当然,EE证书应该拥有一个适合于签名的公钥,即RSA、DSA、ECDSA.但不是迪夫-赫尔曼。

重要的一点是,将“嵌入证书”链接到“生成机器证书”只有在您希望XML签名由泛型验证器进行验证时才有意义,这些验证器将不知道您的特定应用程序,并且使用一组通用的信任锚(包括卖给您的“构建机器证书”)。很可能它无法工作,因为您的“生成机器证书”设置了"CA“位是不可能的。要检查证书的内容,可以使用OpenSSL:命令行工具(已经包含在MacOS X、任何好的Linux或*BSD以及MacOS工具可用):

代码语言:javascript
复制
openssl x509 -text -noout -in cert.pem
openssl x509 -text -noout -inform DER -in cert.crt

(如果证书采用PEM格式,则使用第一个;如果是PEM格式,则使用第二个;或者同时尝试两者。)

如果您控制验证器(即在您的应用程序中,验证XML文档上签名的系统将是您也提供的一些软件),那么插入到商业CA的构建机证书是无用的;最好创建自己的CA并制作证书。OpenSSL可以这样做,或者您可以使用更图形化的解决方案,比如EJBCA

我故意不对您的“安全嵌入证书”概念的正确性作出任何断言。

票数 6
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/6699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档