Windows 7에서 XAMPP의 일부로 PHP 버전 5.6.3을 실행하고 있습니다.
Mandrill API를 사용하려고 하면 다음 오류가 나타납니다.
메시지/전송 템플릿에 대한 API 호출 실패: SSL 인증서 문제: 로컬 발급자 인증서를 가져올 수 없음’ 메시지와 함께 수집되지 않은 예외 ‘Mandrill_HttpError’
StackOverflow에서 읽은 모든 것을 시도해 보았습니다.이것에는 php.ini 파일에 다음 항목이 추가되어 있습니다.
curl.cainfo = "C:xamppphpcacert.pem"
물론 http://curl.haxx.se/docs/caextract.html에서 cacert.pem 파일을 다운로드했습니다.
그 후 XAMPP와 Apache 서버를 재기동했지만, 같은 에러가 발생.
또 뭘 해야 할지 모르겠어요.
제가 또 무엇을 시도해 볼 수 있는지 조언해 주실 수 있나요?
질문에 대한 답변
드디어 작동하게 됐어!
증명서 번들을 다운로드합니다.
어디다 놔둬요.저 같은 경우에는요.
c:wamp
디렉토리(Wamp 64비트를 사용하고 있는 경우는,c:wamp64
).가능하게 하다
mod_ssl
Apache 및php_openssl.dll
에php.ini
(삭제하여 보충합니다.;
(처음에는)하지만 조심해, 내 문제는 두 개가 있다는 거야php.ini
두 파일 모두에서 이 작업을 수행해야 합니다.하나는 WAMP 태스크바아이콘에서 얻을 수 있는 것이고, 다른 하나는 제 경우입니다.C:wampbinphpphp5.5.12
양쪽에서 증명서에 다음 행을 추가합니다.
php.ini
파일:curl.cainfo="C:/wamp/cacert.pem" openssl.cafile="C:/wamp/cacert.pem"
Wamp 서비스를 재시작합니다.
편집자 주의: SSL 검증을 비활성화하면 보안에 영향이 있습니다.SSL/HTTPS 연결의 신뢰성을 확인하지 않으면 악의적인 공격자가 신뢰할 수 있는 엔드포인트(GitHub 또는 기타 원격 Git 호스트 등)로 가장하여 중간자 공격에 취약해질 수 있습니다.
이를 해결책으로 사용하기 전에 보안 문제를 완전히 이해해야 합니다.
$this->ch = curl_init()라고 되어 있는 65행 뒤에 Mandrill.php 파일에서 같은 문제가 발생했습니다.
다음 두 줄을 추가합니다.
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);
이것으로 문제가 해결되어 localhost를 사용하여 이메일도 보내졌지만 라이브 버전에서는 사용하지 않는 것이 좋습니다.라이브 서버에서는, 이 코드가 없어도 동작합니다.
@Laden Janjetovic님 감사합니다.
암페어가 설치된 맥에서는 당신의 제안이 효과가 있었습니다.
복사됨: http://curl.haxx.se/ca/cacert.pem
수신인: /Applications/AMPPS/extra/etc/openssl/certs/cacert.pem
업데이트 완료php.ini
Apache를 재시작했습니다.
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. curl.cainfo="/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem" openssl.cafile="/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem"
또한 Windows AMPPS 설치에도 동일한 설정이 적용되어 완벽하게 동작했습니다.
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. curl.cainfo="C:/Ampps/php/extras/ssl/cacert.pem" openssl.cafile="C:/Ampps/php/extras/ssl/cacert.pem"
: wamp도 마찬가지입니다.
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. curl.cainfo="C:/wamp/bin/php/php5.6.16/extras/ssl/cacert.pem" openssl.cafile="C:/wamp/bin/php/php5.6.16/extras/ssl/cacert.pem"
로컬 호스트용 SAN을 사용하여 새로운 SSL 증명서를 생성하려는 경우 이 게시물의 절차는 다음과 같습니다.Centos 7 / Vagrant / Chrome Browser
.
http://curl.haxx.se/docs/caextract.html 페이지를 표시하면 다음과 같은 섹션이 큰 글씨로 표시됩니다.
RSA-1024 분리
이 문서를 읽은 다음 ‘RSA-1024’ 인증서가 포함된 인증서 버전을 다운로드합니다.https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
그것들은 맨드릴과 함께 작동될 것이다.
SSL을 무효로 하는 것은 좋지 않습니다.
위의 절차는 도움이 되었지만 Windows 8에서는 작동하지 않았습니다.상관관계는 모르겠지만, 다음 단계가 효과가 있었다.기본적으로 cacert.pem 파일의 변경입니다.이게 도움이 됐으면 좋겠네요.
- http://curl.haxx.se/docs/caextract.html 에서 cacert.pem 파일을 다운로드합니다.
- 파일을 PHP 설치 폴더에 저장합니다.(예: xampp를 사용하는 경우 – c:에 저장합니다.Installation_Dirxamppphpcacert.pem).
- php.ini 파일을 열고 다음 행을 추가합니다.
- curl.cainfo=”C:Installation_Dirxamppphpcacert.pem” openssl.cafile=”C:Installation_Dirxamppphpcacert.pem”
- Apache 서버를 재시작하면 해결됩니다(필요에 따라 서비스를 중지하고 시작하십시오).