2012-12-17 79 views
0

我想用我的CA簽署CSR。我把這個代碼的某些部分從phpseclib: X.509 Examplesphpseclib用自己的CA簽署CSR

<?php 
include('File/X509.php'); 
include('Crypt/RSA.php'); 
$c = $_POST['csr']; 

$CAPrivKey = new Crypt_RSA(); 
$CAPrivKey->setPassword('PrivatePassword'); 
$CAPrivKey->loadKey("-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,47EF178926906B55 

lVtuTcJ1etpRaUT9086Vm5dsop8o5D92VVubcyhI268ZG4frRCBR4yuyORp+zdS2 
[...] 
gyx636VRV7aekLc6IFHJ56MzZRA/23izSooWqAJLTGEBrc4CWuodj9cc/+p3+9zC 
-----END RSA PRIVATE KEY----- 
"); 

$issuer = new File_X509(); 
$issuer->setPrivateKey($CAPrivKey); 
$issuer->loadX509("-----BEGIN CERTIFICATE----- 
MIIK0zCCBrugAwIBAgIJAPzTFDuzmcUcMA0GCSqGSIb3DQEBBQUAMIGhMQswCQYD 
[...] 
6F5Ji6w2IfD6xFhgvyTmqYgsae3+DEX6TAJosaI0EJQz6vYeubQb 
-----END CERTIFICATE----- 
"); 


$subject = new File_X509(); 

$subject->loadCSR($c); 


$x509 = new File_X509(); 
$x509->setStartDate('-1 month'); 
$x509->setEndDate('+1 year'); 

$result = $x509->sign($issuer, $subject); 

echo $x509->saveX509($result); 
?> 

在$ CSR我有CSR格式是這樣的:

----- BEGIN CERTIFICATE REQUEST ----- MIGYMIGFAgAwbzELMAkGA1UEBgwCUEwxCjAIBgNVBAgMAS4xETAPBgNVBAcMCExlb2Frd2RhMQow [。 ..] dGVzdC5wbDAQMAsGCSqGSIb3DQEBAQMBADALBgkqhkiG9w0BAQUDAQA = ----- END CERTIFICATE REQUEST -----

此代碼給我錯誤:Fatal error: Maximum execution time of 30 seconds exceeded in D:\wamp\www\Math\BigInteger.php on line 1659

+0

如果您從命令行在同一臺服務器上運行等效的openssl命令,簽名需要多長時間? – rlandster

+0

@ rlandster不超過兩秒 – Disa

回答

3

密鑰有多少位?你有沒有安裝gmp或bcmath或openssl?如果可用的話,Phpseclib使用其中的每一個來加快速度,如果沒有,它將使用它自己的內部實現,這是最慢的。根據math_biginteger benchmarks on phpseclib.sourceforge.net,即使使用2048位密鑰,舊版本php上的純php實現也需要很長時間。

+0

右側,啓用GMP延長將時間減少到約1秒。感謝幫助。剛剛發生的另一個問題是,當我嘗試打開.cdr文件時,Windows說它已損壞。 – Disa

+0

你如何打開文件? – mailpa

+0

我也不會介意知道鑰匙有多大是我自己造就的。根據你所說的時間,我認爲這是一個非常重要的關鍵。像8192位或其他什麼.. – mailpa

相關問題