我想在PHP 5.x中創建一個自簽名證書。與我自己的(替代)openssl配置應該由我的PHP代碼定義。 PHP腳本將運行在不同的環境中(共享託管Web服務器)。OpenSSL真的需要一個openssl.conf的路徑嗎?
官方PHP Manual說:
默認情況下,在你的系統openssl.conf的信息被用來初始化請求;您可以通過設置configargs的config_section_section項來指定配置文件部分。您還可以通過將config密鑰的值設置爲您要使用的文件的路徑來指定替代openssl配置文件。以下鍵,如果出現在configargs表現爲自己在openssl.conf等價物,如下表所列.....
我的問題:是否有一個原因,我必須指定路徑明確openssl.conf,因爲它似乎沒有它做工精細:
$Configs = array(
'digest_alg' => 'sha1',
'x509_extensions' => 'v3_ca',
'req_extensions' => 'v3_req',
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
'encrypt_key' => true,
'encrypt_key_cipher' => OPENSSL_CIPHER_3DES
);
$privkey = openssl_pkey_new();
$csr = openssl_csr_new($dn, $privkey, $Configs);
$sscert = openssl_csr_sign($csr, null, $privkey, 365, $Configs);
編輯:在PHP Manual
在用戶貢獻筆記,爲什麼他們總是指定的路徑openssl.cnf中?例如:
$configargs = array(
'config' => '/etc/ssl/openssl.cnf',
'digest_alg' => 'md5',
'x509_extensions' => 'v3_ca',
'req_extensions' => 'v3_req',
'private_key_bits' => 666,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
'encrypt_key' => false,
);
.conf文件用於指定默認值,所以你不必在輸入相同的事情,爲您創建的每個證書創建。沒有默認設置就沒有問題,只是更乏味。 – 2012-03-05 16:42:47
我不是PHP/OpenSSL專家,但似乎某些配置設置無法通過PHP腳本進行定義/更改。有人可以確認/解僱這個嗎? – Mike 2012-03-05 17:27:48