kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

OS

php에서 https로의 소켓 접속 ( fsockopen, fsocket이라고도 함 )

까마기 2014. 9. 15. 18:01
728x90
반응형

php에서 https로의 소켓 접속을 하려면
fsockopen($host, $port)함수를 사용하면 되는데, $port=443이고 $host는 ssl://로 시작하도록 접두어를 붙여야 한다.

좀더 구체적으로 예를 들면

fsockopen("ssl://some.site.addr", 443)  

이 경우 PHP는 openSSL이 설치되어 있어야 제대로 동작한다. 직접 확인해본 결과도 ssl즉 https로의 접속이 문제없이 잘 되었다. 
만일 설치되어 있지 않으면? "Unable to find the socket transport ssl did you forget to enable it when you configured PHP" 이라는 에러 메시지가 나온다.
Plesk를 사용한 서버는 미리 openSSL을 설치해 둔 것같다. 굳이 버전을 확인해보지는 않았으나 PHP에서 접속이 되는 것으로 보아 openSSL이 설치된 것으로 여기고 확인하지는 않았다.

<참고>
fsockopen함수가 아닌 curl함수계열을 써서 접속하는 예제도 많이 있으나 fsockopen이 단순하고 http접속을 공유화 할 수 있기 때문에 편리하다고 본다.

만일 openSSL 모듈이 설치되어 있지 않다면 다운로드하여 설치해야 한다.



========================================================================


* fsockopen 함수 사용 테스트


테스트 파일 만들기


<?

   $fp = fsockopen('www.oh7.co.kr',80,$errno,$errstr,10);

   if ( $fp ) {

       $send = 'GET /main/index.php HTTP/1.0'."\r\n";

       $send.= 'Host: oh7.co.kr'."\r\n";

       $send.= 'Connection: Close'."\r\n\r\n";

       fwrite($fp,$send);

       $content = '';

       while ( !feof($fp) ) $content.= fread($fp,1024);

       $content = substr($content,strpos($content,"\r\n\r\n")+4);

       fclose($fp);

       file_put_contents('test.html',$content);

  }

?>




-> 위 예제해서 해당 도메인은 환경에 맞게 변경 한다. 

-> 권한은 777

-> 해당 도메인에 있는 index.php를 불러와서 정적인 test.html 변환하는 짧은 예제.


반응형

'OS' 카테고리의 다른 글

mysql log 설정 총 정리  (0) 2014.09.15
mysql master-slave 설정 ( mysql replication )  (0) 2014.09.15
mysql lock 걸리는 부분  (0) 2014.09.14
scan ssh  (0) 2014.09.14
Windows 세션 및 PID 확인 -> netstat  (0) 2014.09.14