我们已经在智能卡上提供了一组测试证书,用于开发需要使用PKI签署XML消息的解决方案。每个(物理)智能卡似乎都有两个证书存储在其上。我使用智能卡提供商提供的软件将它们导入Windows证书存储区,然后使用类似以下内容的代码迭代已安装的证书:
foreach (X509Certificate2 x509 in CertStore.Certificates) {
foreach (X509Extension extension in x509.Extensions) {
if (extension.Oid.Value == "one we are interested in") {
X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
if ((ext.KeyUsages & X509KeyUsageFlags.DigitalSignature) != X509KeyUsageFlags.None) {
// process certs here
我们被告知要使用设置了NonRepudiation密钥用法标志的证书来签署XML。但是,具有NonRepudiation标志的证书具有此标志仅,而不是我上面检查的DigitalSignature标志。除了我之外,这会让人感到有点奇怪吗?换句话说,我被告知签署的证书没有(似乎)设置了DigitalSignature使用标志。这是正常的程序吗?有什么意见吗?
感谢。
答案 0 :(得分:1)
它有什么关键用途?你是对的,这有点奇怪,但是,例如,如果密钥用于提供AD登录,那么它可能没有为DigitalSignature使用设置标志。这并不是说你不能用它,它只是表明当你超出密钥的指示用途时,证书颁发者不能保证。
答案 1 :(得分:1)
当我阅读RFC 5280(4.2.1.3)时,nonRepudiation是digitalSignature的超集。换句话说,它授予digitalSignature的所有能力,然后授予一些。从技术上讲,他们所要求的是有效的,尽管可能不同寻常。
答案 2 :(得分:1)
如果您想提供不可否认服务,即您希望签名具有LEGAL值,那么您应该仅使用nonRepudiation。实际上,这是标准推荐的(参见ETSI TS 102 280),因为使用其他keyUsage位和nonRepudation可能存在安全问题。