2012-12-17 5 views
0

CA에 CSR에 서명하고 싶습니다.phpseclib가 자신의 CA에서 CSR에 서명

-----이 ----- MIGYMIGFAgAwbzELMAkGA1UEBgwCUEwxCjAIBgNVBAgMAS4xETAPBgNVBAcMCExlb2Frd2RhMQow [인증서 요청을 BEGIN : 나는 CSR이 방법을 포맷있어 $의 CSR에 phpseclib: X.509 Examples

<?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); 
?> 

에서이 코드의 일부를했다. Fatal error: Maximum execution time of 30 seconds exceeded in D:\wamp\www\Math\BigInteger.php on line 1659

: ..] dGVzdC5wbDAQMAsGCSqGSIb3DQEBAQMBADALBgkqhkiG9w0BAQUDAQA = ----- END 인증서 REQUEST -----

이 코드는 저 오류 준다

+0

동일한 서버에서 명령 줄과 동일한 openssl 명령을 실행하는 경우 서명하는 데 얼마나 걸리나요? – rlandster

+0

@ rlandster 2 초 이내 – Disa

답변

3

키는 몇 비트입니까? gmp 또는 bcmath 또는 openssl이 설치되어 있습니까? Phpseclib은 가능한 경우 속도를 높이기 위해 각각의 방법을 사용합니다. 그렇지 않은 경우 Phpseclib는 가장 느린 내부 구현을 사용합니다. math_biginteger benchmarks on phpseclib.sourceforge.net에 따르면 이전 버전의 PHP에서의 순수 PHP 구현은 2048 비트 키로도 긴 시간이 걸릴 것입니다.

+0

오른쪽, GMP 확장 기능을 사용하면 약 1 초의 시간이 단축됩니다. 도와 주셔서 감사합니다. 방금 발생한 다른 문제는 .cdr 파일을 열려고하면 Windows가 손상되었다는 것입니다. – Disa

+0

파일을 어떻게 열려고합니까? – mailpa

+0

나는 또한 열쇠가 내 자신의 교화 였는지 얼마나 큰지도 모르겠다. 당신이 말하고있는 시간을 기반으로 물건을 내 추측은 꽤 큰 열쇠가 될 것입니다. 8192 비트 또는 이와 비슷합니다. – mailpa