做一个对接证书的项目,后台使用的PHP,以前没有弄过,捣半天,记录如下。
对接证书需要让用户生成CSR证书请求文件,使用PHP函数openssl_csr_new()
openssl_csr_new ( array $dn , resource &$privkey [, array $configargs [, array $extraattribs ]] ) : mixed dn 在证书中使用的专有名称或主题字段。 privkey privkey 应该被设置为由openssl_pkey_new()函数预先生成(或者以其他方式从openssl_pkey函数集中获得)的私钥。该密钥的相应公共部分将用于签署CSR.
一个简单的例子使用openssl_csr_new生成CSR
// 收集域名信息
$dn = array(
"countryName" => "CN",
"stateOrProvinceName" => "ZZ",
"localityName" => "ZZ",
"organizationName" => "The Brain Room Limited",
"organizationalUnitName" => "PHP Documentation Team",
"commonName" => "phpfv.com",
"emailAddress" => "master@phpfv.com"
);
// 生成私钥
$privkey = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
// 根据域名信息,私钥生成 CSR
$csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha256'));把CSR推送给证书商,通过验证后就可以下发证书了。用openssl_csr_new生成的CSR和openssl_pkey_new生成的私钥头部可能和其它工具生成的不一样,并不影响使用。

