서버에서도 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
공식 사이트에서 받은 .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 파일을 엽니다:
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 하다가 아래 코드로 해결 됨?
'IT' 카테고리의 다른 글
C# 크롬(크로미움-Chromium) 웹 브라우저 만들기 (7) | 2024.11.09 |
---|---|
리액트 네이티브(React Native) react-native-community/cli doctor (5) | 2024.11.08 |
아파치 HTTP 서버와 Nginx(엔진엑스) 웹서버 비교 (2) | 2024.09.05 |
윈도우 패키지 관리도구 Chocolatey(Choco) 설치 (3) | 2024.08.18 |
AWS EC2 우분투 - MariaDB(MySQL) 설치 방법 (2) | 2024.08.17 |