오픈소스(Open Source)인 EC-CUBE를 이욯애서 구축한 쇼핑몰이 있는데, 이곳에서도 TLS1.2관련 문제가 발생했습니다.
백그라운드로 결제대행회사 시스템에 접속해"주문확정,캔슬"등의 정보를 송신하는 부분이 에러입니다.
기존 환경입니다.
---------------------------------
Windows Server 2003
IIS6.0
PHP5.1.2
EC-CUBE 2.12
---------------------------------
TLS1.2대응을 하려면 cURL7.34, OpenSSL 1.0.1이상이 되어야하네요.
위의 버전의 Extension은 PHP5.6버전을 설치하면 된다고합니다.
시행착오들의 정리입니다.
1. 기존환경을 그대로 유지하면서 cURL과 OpenSSL만 버전업해보자.
PHP5.6버전을 다운로드해서 Ext폴더에서
---------------------------------
php_curl.dll
php_openssl.dll
---------------------------------
를 복사해서 넣었습니다.
아예 cURL과 OpenSSL이 작동하지 않습니다.
5.1버전과 5.6버전이 차이가 큰 것으로 생각됩니다.
2.기존환경에 PHP만 버전업하자.
https://windows.php.net/download/
PHP5.6버전을 다운로드합니다.(VC11 x64 Non Thread Safe)
Visual Studio 2012 업데이트 4용 Visual C++ 재배포 가능 패키지를 설치합니다.
https://www.microsoft.com/ko-KR/download/details.aspx?id=30679
작동을 안합니다. ..
「php.exe는 유효한 Win32어플리케이션이 아닙니다. (php.exe is not a valid win32 application)」
5.1버전과 5.6버전이 차이가 정말 큰가 봅니다.
Windows Server 2003서버에서 PHP5.6을 작동시키기 위해서는 FastCGI를 이용하라는 정보를 확인합니다.
https://www.iis.net/downloads/microsoft/fastcgi-for-iis
FastCGI를 다운로드,설치하고 PHP5.6과의 연동설정을 합니다.
C:\WINDOWS\system32\inetsrv\fcgiext.ini 의 맨 밑에
---------------------------------
[Types]
php=PHP
[PHP]
ExePath=C:\php5.6\php-cgi.exe
---------------------------------
를 직접추가하거나
C:\windows\system32\inetsrv로 이동후 커맨드로 아래를 실행합니다.
---------------------------------
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\php5.6\php-cgi.exe"
---------------------------------
C:\php5.6\php-cgi.exe (PHP설치폴더안의 php-cgi.exe의 경로입니다.)
그리고 IIS6.0관리자>>홈디렉토리>>구성>>매핑 에서
---------------------------------
.php를 C:\windows\system32\inetsrv\fcgiext.dll 로 매핑해줍니다.
---------------------------------
추가로 성능향상,보안을 위해php.ini를 수정합니다.
---------------------------------
fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
cgi.force_redirect = 0
---------------------------------
작동을 안합니다...에러의 내용은 같습니다.....
3.전체환경을 바꾸자.
---------------------------------
Windows Server 2008 R2
IIS6.1
PHP 7.1
EC-CUBE 2.12
---------------------------------
당연히 해결로 생각했는데..EC-CUBE 2.12가 PHP7을 지원하지 않습니다..... 쉬운게 없습니다.
결국...
---------------------------------
Windows Server 2008 R2
IIS7.5
PHP 5.6
EC-CUBE 2.12
---------------------------------
으로 몇 군데 EC-CUBE의 에러로 수정은 필요했지만..
결제대행회사 시스템과도 문제없이 통신이 가능했습니다.
전체 설정의 간단정리입니다.
1.EC-CUBE작동을 위한 폴더권한설정(Everyone 읽고실행)
-------------------------------
ECCUBE_HOME¥html¥install¥temp
ECCUBE_HOME¥html¥user_data
ECCUBE_HOME¥html¥cp
ECCUBE_HOME¥html¥upload
ECCUBE_HOME¥data¥install.php
ECCUBE_HOME¥data¥cache
ECCUBE_HOME¥data¥class
ECCUBE_HOME¥data¥Smarty
ECCUBE_HOME¥data¥downloads
ECCUBE_HOME¥data¥logs
-------------------------------
2.PHP.INI
-------------------------------
mbstring.language = Japanese
auto_detect_line_endings = on
output_handler = null
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = on
mbstring.detect_order = auto
mbstring.substitute_character = none
magic_quotes_gpc = off
//extensions
php_curl.dll
php_gd2.dll
php_mbstring.dll
php_mysql.dll
php_openssl.dll
php_sockets.dll
-------------------------------
3.IIS에 FastCGI로 작동설정
-------------------------------
ECCUBE_HOME¥html 를 홈디렉토리로
-------------------------------
휴우..또 하나 해결했습니다..