PHP OpenSSL 是一種開源的加密庫,它提供了許多加密方法。利用 PHP OpenSSL,我們可以輕松地生成數字證書,這在安全傳輸數據時非常有用。
下面,我們將一步步介紹如何使用 PHP OpenSSL 生成數字證書。
1. 生成一個 RSA 私鑰
$sPrivate_Key_File = 'private.key'; $iBits = 2048; //生成一個2048位隨機的 RSA 私鑰 $fp = fopen($sPrivate_Key_File, "w"); $res = openssl_pkey_new(array( "private_key_bits" => $iBits, "private_key_type" => OPENSSL_KEYTYPE_RSA, ) ); openssl_pkey_export($res, $sPrivate_Key); fwrite($fp, $sPrivate_Key); fclose($fp);
這段代碼通過openssl_pkey_new
函數生成一個新的 RSA 密鑰對,并使用openssl_pkey_export
函數將 RSA 私鑰導出到文件。
2. 生成自簽名證書請求
$sCert_Request_File = 'request.pem'; $sSubject = "/C=US/ST=CA/L=SanFrancisco/O=MyOrganization/OU=MyUnit/CN=www.example.com/emailAddress=admin@example.com"; $sPassphrase = ''; //生成簽名請求 $fp = fopen($sCert_Request_File, "w"); //生成證書請求 $res_csr = openssl_csr_new( array( "countryName" => "US", "stateOrProvinceName" => "CA", "localityName" => "SanFrancisco", "organizationName" => "MyOrganization", "organizationalUnitName" => "MyUnit", "commonName" => "www.example.com", "emailAddress" => "admin@example.com" ), $res_private_key ); openssl_csr_export($res_csr, $sCert_Request); fwrite($fp, $sCert_Request); fclose($fp);
這段代碼利用openssl_csr_new
函數生成自簽名證書請求,通過指定證書名字和證書擁有者信息來生成自簽名的證書請求。我們可以通過修改$sSubject
來設置自己的證書擁有者信息。
3. 生成自簽名證書
$sCert_File = 'cert.pem'; //生成證書 $fp = fopen($sCert_File, "w"); $res_cert = openssl_csr_sign($res_csr, null, $res_private_key, 365); openssl_x509_export($res_cert, $sCert); fwrite($fp, $sCert); fclose($fp);
這段代碼利用openssl_csr_sign
函數生成自簽名證書,簽名過程中使用之前生成的 RSA 私鑰簽名。我們可以通過修改第三個參數設置證書有效時間。
4. 整合 RSA 私鑰和證書
$sCert_Key_File = 'cert.key'; //將證書和私鑰合并到一個文件中 $fp = fopen($sCert_Key_File, "w"); fwrite($fp, $sCert); fwrite($fp, $sPrivate_Key); fclose($fp);
這段代碼將之前生成的 RSA 私鑰和證書合并到一個文件中,以便后續(xù)使用。
通過上述四步,我們就成功地生成了一個數字證書,可以在進行安全傳輸數據時使用。
上一篇php osadmin