我正在研究PKI(公钥基础结构)中的数字证书。几乎所有关于此的手册/页面都给出了类似的步骤。如何通过CA公钥验证数字证书
- 获取主题标识+主题公钥(和/或加密的邮件哈希与主题的私钥)并构建证书。
- 与CA与私钥
- 目的地,验证证书注册证书CA的公钥
现在我能找到(使用OpenSSL的LIB)在PHP的方式为第1和第2步,可以产生一个证书并通过openssl API对它进行签名(可选地生成一个签名哈希并签名)。
但问题与第三步,他们没有指导线或函数调用,显示如何使用CA的公钥验证证书。
如果我失去了一些东西?
示例代码我检查是象下面
$data = 'my data';
//create new private and public key
$req_key = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
$dn = array(
"countryName" => "IN",
"stateOrProvinceName" => "Delhi",
"organizationName" => "example.net",
"organizationalUnitName" => "Security",
"commonName" => "example.net"
);
$req_csr = openssl_csr_new ($dn, $req_key);
$req_cert = openssl_csr_sign($req_csr, null, $req_key, 365);
openssl_x509_export ($req_cert, $out_cert);
echo $out_cert;
背景:我需要实现基于PKI的数据共享/验证对于一些应用。它将涉及一些数据实体(数据实体将其公钥和私钥)在源端加密,然后发送到目的地。然后目的地解密并获得清晰的数据。但是整体必须涉及PKI,这意味着数字签名+数字证书的实施。
你能澄清你想要做什么吗?您的问题现在读取的方式,听起来像是您将密钥交换的概念与证书验证混合在一起。证书验证是一个单独的问题。验证完全取决于受信任的根证书颁发机构的概念,该概念建立了一个链,用于从服务器证书返回给受信任的授权机构。 –
@TechnikEmpire,我添加了一些问题的背景 –