테스트 사이트 - 개발 중인 베타 버전입니다

이니시스 결제 도중 OpenSSL 오류 발생시

· 5년 전 · 2855
* 오류 내용
Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /home/theway/www/test.php on line 9

* 원인
외부와 소켓통신을 위해서는 fsockopen 함수를 사용하는데, PHP 5.6 이상부터는 필수적으로 SSL 인증서 유효성을 검사합니다. 때문에 openSSL 루트 인증서가 없거나 환경구성이 잘못된 경우에는 위와 같은 오류가 발생할 수 있습니다. 단독서버거나 클라우드 호스팅이라면 서버 설정을 통해 문제를 해결할 수 있겠지만, 일반 호스팅이라면 호스팅 업체에 문의하거나 아래처럼 인증서의 유효성 검사를 비활성화하도록 코드를 수정해야 합니다.

* 코드 (/shop/inicis/libs/HttpClient.php : 53 Line)
[code]
$context = stream_context_create();
stream_context_set_option($context, 'ssl', 'verify_peer', false);

if (!$this->sock = stream_socket_client($this->ssl.$this->host.':'.$this->port, $errno, $errstr, CONNECT_TIMEOUT, STREAM_CLIENT_CONNECT, $context)) {
// if (!$this->sock = @fsockopen($this->ssl . $this->host, $this->port, $errno, $errstr, CONNECT_TIMEOUT)) {

switch ($errno) {
case -3:
$this->errormsg = 'Socket creation failed (-3)';
case -4:
$this->errormsg = 'DNS lookup failure (-4)';
case -5:
$this->errormsg = 'Connection refused or timed out (-5)';
default:
$this->errormsg = 'Connection failed (' . $errno . ')';
$this->errormsg .= ' ' . $errstr;
}
return false;
}
[/code]

참고 : https://www.enteroa.com/2016/06/01/php-5-6%EC%9D%B4%EC%83%81-fsockopen-%EB%AC%B8%EC%A0%9C/

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
1071
1061
1056
1046
1007
1006
1003
993
983
982
966
943
932
921
908
903
902
901
898
893
883
880
874
870
867
862
861
860
857
854