添加x509v3扩展名会导致Mozilla pkix无法信任

时间:2014-07-30 03:07:33

标签: c++ firefox ssl certificate mozilla

我正在通过NSS / NSPR C ++ API添加自签名的根证书。

这需要一个x509v3扩展名,主题alt名称。但是,添加此扩展程序或任何x509v3扩展名会导致firefox失败并显示Error code: sec_error_extension_value_invalid

// Add subjectAltName x509v3 extension containing our localhost IPv4
// address of 127.0.0.1.  The subjectAltName entry takes precedence over
// the CommonName (CN) entry, thus we are allowed to have a more
// descriptive name there. In addition, this is needed by Safari on Mac in
// order to properly trust the certificate.
X509V3_CTX ctx;
X509V3_set_ctx_nodb(&ctx);
X509V3_set_ctx(&ctx, m_x509, m_x509, nullptr, nullptr, 0);

// Removing this line causes the cert to be accepted by firefox:
X509_EXTENSION* ext = X509V3_EXT_conf_nid(nullptr, &ctx, NID_subject_alt_name, (char*)"DNS:127.0.0.1,IP:127.0.0.1");

if (ext) {
  X509_add_ext(m_x509, ext , -1);
  X509_EXTENSION_free(ext);
}

// Sign the certificate
X509_sign(m_x509, m_key->m_pkey, EVP_sha1());

这似乎是一个pkix错误,因为在use_mozillapkix_verification = false中设置about:config,或者使用ff< 31,使证书被接受OK。

这是一个pkix错误吗?或者有什么东西被忽略了吗?

2 个答案:

答案 0 :(得分:3)

通过https://bugzilla.mozilla.org/show_bug.cgi?id=1045973

  

NSS接受带有v3扩展名的v1 / v2证书,mozilla :: pkix不支持

修复:

X509_set_version(m_x509, 2L);

答案 1 :(得分:2)

此错误是filed at bugzilla,因此寻找答案的人可能需要查看错误的评论。