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

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

· 5년 전 · 2853
* 오류 내용
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/

댓글 작성

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

로그인하기

게시글 목록

번호 제목
2503
2501
2497
2495
2491
2490
2489
2486
2484
2483
2481
2476
2475
2474
2472
2469
2467
2466
2465
2464
2463
2460
2459
2456
2449
2446
2441
2420
2419
2417