2014-11-24 8 views

답변

1
$x509->setExtension('id-ce-extKeyUsage', array('id-kp-serverAuth', 'id-kp-clientAuth')); 

전체 예 :

<?php 
include('File/X509.php'); 
include('Crypt/RSA.php'); 

// create private key/x.509 cert for stunnel/website 
$privKey = new Crypt_RSA(); 
extract($privKey->createKey()); 
$privKey->loadKey($privatekey); 

$pubKey = new Crypt_RSA(); 
$pubKey->loadKey($publickey); 
$pubKey->setPublicKey(); 

$subject = new File_X509(); 
$subject->setDNProp('id-at-organizationName', 'phpseclib demo cert'); 
$subject->setPublicKey($pubKey); 

$issuer = new File_X509(); 
$issuer->setPrivateKey($privKey); 
$issuer->setDN($subject->getDN()); 

$x509 = new File_X509(); 

$x509->loadX509($x509->saveX509($x509->sign($issuer, $subject))); 

$x509->setExtension('id-ce-keyUsage', array('digitalSignature', 'keyEncipherment')); 
$x509->setExtension('id-ce-extKeyUsage', array('id-kp-serverAuth', 'id-kp-clientAuth')); 

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

echo "the stunnel.pem contents are as follows:\r\n\r\n"; 
echo $privKey->getPrivateKey(); 
echo "\r\n"; 
echo $x509->saveX509($result); 
echo "\r\n"; 

은 내가 당신이 효과하지만 무엇을 얻을 수있는 인증서를 다시 서명에 얼마나 좋아 말할 수 없습니다.

+0

대단히 감사합니다. 완벽하게 작동합니다! 제 다른 질문도보세요 http://stackoverflow.com/questions/27100456/setting-ns-cert-type-server-for-openvpn-using-phpseclib? 확장 키 사용으로'id-kp-serverAuth'를 설정하는 것과 같지 않습니까? – JohnKiller

+1

Yah - 내가 집에 갈 때 나는 그렇게 할 것이다! 지금 일하고 있어요. 일들이 하루 동안 시작되고있는 것처럼 보입니다. – neubert