본문 바로가기
IT

아파치웹서버 OpenSSL CS 인증서 설치 - PHP CA 오류 SSL certificate problem:

by SOGNOD 2024. 9. 7.
반응형

서버에서도 cacert.pem 파일을 다운로드하여 사용해야 합니다. 특히 PHP의 cURL 또는 PHPMailer 같은 라이브러리가 SSL/TLS 연결을 할 때, 서버 인증서를 검증하는데 필요한 루트 인증서 파일이 필요합니다. 만약 루트 인증서가 누락되거나, 서버가 기본적으로 제공하는 CA 인증서 경로가 올바르지 않은 경우 stream_socket_enable_crypto() 또는 SSL 연결 오류가 발생할 수 있습니다.

개발PC Visual Studio 터미널 에서 "php send.php" 실행시 CA 인증 관련 오류메세지

이 오류는 일반적으로 cURL이 원격 서버의 SSL 인증서를 확인할 수 없기 때문에 발생합니다.

SSL certificate problem:

PHP Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://oauth2.googleapis.com/token in C:\dev\api\guzzle\src\Handler\CurlFactory.php:276

 

이 문제는 cURL 공식 웹사이트에서 https://curl.se/ca/cacert.pem  파일을 다운로드받아 설치하면 해결 됩니다.

https://curl.haxx.se/ca/cacert.pem

https://curl.se/ca/cacert.pem

공식 사이트에서 받은 .pem 파일을 php 폴더에 복사합니다.

 

php.ini 파일을 열어 "openssl.cafile=" 에 위에서 복사항 cacert.pem 파일 위치를 등록 합니다.

 

아파치 웹서버를 재시작 후 cUrl 로 테스트를 진행 합니다.

# AWS 우분투 아파치 서버에도 설치

1. CA 인증서(cacert.pem) 다운로드 및 설치

먼저 curl.haxx.se에서 제공하는 cacert.pem 파일을 웹서버로 다운로드해야 합니다. 개발 환경과 동일하게 루트 인증서 파일을 설정함으로써 인증서 문제를 해결할 수 있습니다.

# /etc/ssl/certs 디렉토리에 cacert.pem 파일을 다운로드합니다.
sudo wget -O /etc/ssl/certs/cacert.pem https://curl.se/ca/cacert.pem
 

 

2. PHP 설정에 CA 인증서 파일 경로 지정

cacert.pem 파일을 다운로드한 후 PHP에서 이를 인식할 수 있도록 php.ini 파일에 CA 인증서 경로를 설정합니다. php.ini 파일의 설정을 다음과 같이 변경하세요.

php.ini 파일을 엽니다:

# PHP CLI 설정 (버전과 환경에 맞게 경로 수정)
sudo nano /etc/php/8.3/cli/php.ini 

다음과 같은 설정을 추가하거나 기존 설정을 수정합니다.

; curl.cainfo 설정
curl.cainfo = "/etc/ssl/certs/cacert.pem"

; openssl.cafile 설정
openssl.cafile = "/etc/ssl/certs/cacert.pem"

# Apache용 PHP 설정

sudo nano /etc/php/8.3/apache2/php.ini  

다음과 같은 설정을 추가하거나 기존 설정을 수정합니다.

; curl.cainfo 설정
curl.cainfo = "/etc/ssl/certs/cacert.pem"

; openssl.cafile 설정
openssl.cafile = "/etc/ssl/certs/cacert.pem"

이렇게 설정하면 PHP가 cURL이나 OpenSSL을 통해 SSL/TLS 연결을 할 때 cacert.pem 파일을 참조하여 인증서를 검증할 수 있습니다.

 

PHP 에서 smt.cafe24.com 으로 TLS:587 SMTP 전송시도시 오류 ㅠㅠ"
PHP Fatal error:  Uncaught PHPMailer\\PHPMailer\\Exception: SMTP Error: Could not connect to SMTP host. Connection failed. stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:\nerror:0A000102:SSL routines::unsupported protocol 

서버에서 OpenSSL 설정등 별별X 하다가 아래 코드로 해결 됨?

    // AWS 서버에서 cafe24 OpenSSL 연동 오류 대응용 코드 입니다.
    $mail->SMTPAutoTLS = false; // 자동 TLS 업그레이드 비활성화
    $mail->SMTPOptions = array(
                        'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                        'allow_self_signed' => true,
                        'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
                        ));
반응형