2017-01-04 2 views
-1

금융 기관의 비밀번호로 암호화 된 JKS 파일을 받았습니다. API는 포트 444를 사용합니다. SoapUI (Preferences -> SSL Settings -> KeyStore [File] + KeyStore Password)에 JKS 파일과 암호를 사용하면 XML 요청 및 응답을 보내고받을 수 있습니다. URL에 액세스하려고하면 JSK 파일 및 비밀번호가 없으면 브라우저는 API 페이지를로드하지 않습니다.금융 기관의 API에 액세스 할 수있는 비밀번호가있는 JKS 파일

파일을 설치하고 브라우저에 비밀번호를 제공 한 후 (Firefox -> 옵션 -> 고급 -> 인증서보기 -> 가져 오기); 페이지 결과가 으로 표시됩니다. [XML 형식] (인증서가있는 페이지에 액세스 할 수 있음)이 적절하지 않습니다.

나는/PEM은 (사용 : 키 도구 -importkeystore -srckeystore keystore.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore keystore.p12) P12로 파일을 변환 - 그것은 (SoupUI 및 브라우저 모두) 상기와 동일하게 작동합니다.

이제 IIS 개발 서버 및 Apache-Production 서버의 PHP 코드에서이 파일 (JKS/PEM) 파일을 사용하고 싶습니다. 실행 중 : 오류 : SSL 인증서 문제 : 로컬 발급자 인증서를 얻을 수 없습니다..

참고 : 암호가 같은 JKS 파일은 다른 공급 업체에서 사용하며 Python 환경이 정상적으로 작동합니다.

해결 방법을 제안하십시오.

감사합니다.

+0

는 해결 : 매력 : 도덕적 지원을위한 감사와 같은 작품 : D를 –

답변

0

먼저 JKS 파일을 PHP 코드에서 사용할 수있는 PEM으로 변환해야합니다.

그런 다음이 수행해야합니다

$options = array(
    CURLOPT_RETURNTRANSFER => true,   // return web page 
    CURLOPT_PORT   => <Port#>,   //Post 
    CURLOPT_CAPATH   => $ca_path,  //CA Path ***and not filename 
    CURLOPT_CAINFO   => $cert_file, //Certificate File 
    CURLOPT_SSLCERT   => $key_file,  //SSL file 
    CURLOPT_SSLKEYPASSWD => $key_password, //Public Key 
    CURLOPT_HTTPHEADER  => $aHeaders,  //Header 
    CURLOPT_POST   => 1,   //Send POST 
    CURLOPT_POSTFIELDS  => $xml,   //To Fetch Data 
    CURLINFO_HEADER_OUT  => $properties, //Application's Username and password 
); 
$ch = curl_init($url); 
curl_setopt_array($ch, $options); 
$content = curl_exec($ch); 
$err = curl_errno($ch); 
$errmsg = curl_error($ch); 
$header = curl_getinfo($ch); 
curl_close($ch); 

$header['errno'] = $err; 
$header['errmsg'] = $errmsg; 
$header['content'] = $content; 
관련 문제