做一个对接证书的项目,后台使用的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生成的私钥头部可能和其它工具生成的不一样,并不影响使用。