做一個對接證書的項目,后臺使用的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生成的私鑰頭部可能和其它工具生成的不一樣,并不影響使用。

