자체 서명된 인증서는 NGinx/PHP에서 문제를 일으킵니다

자체 서명된 인증서는 NGinx/PHP에서 문제를 일으킵니다

방금 Debian 7, Nginx 1.6.2, PHP 5.4.39를 Debian 8, Nginx 1.6.2, PHP 5.6.9로 업그레이드했습니다.
해당 서버에는 PHP, EspoCRM을 통해 이메일을 보내는 데 사용된 CRM이 실행되고 있으며 ZendFramwork2 E-Mail을 사용하고 있습니다(서버 2를 통해 전송 - Thunderbird를 통한 전송은 잘 작동함).
업그레이드 이후까지 잘 작동했습니다. 이제 다음과 같은 오류가 발생했습니다.

500 unable to connect via tls

따라서 약간의 검색을 통해 CRM에 아무 것도 나타나지 않고 자체 서명된 인증서 및/또는 위 스택(NGinx/PHP?)에 있는 항목을 가리킵니다.
발굴을 어디서 시작해야 할지 아시나요? 내 CRM 서버에는 오류 로그에 아무 것도 없습니다(CRM이 이를 삼킨 것 같습니다).
maiml 서버의 syslog 또는 authlog에도 아무것도 표시되지 않습니다.

편집: 정보 추가:
phpinfo ()

Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, tls, tlsv1.0, tlsv1.1, tlsv1.2
curl   
SSL     Yes
SSL Version     OpenSSL/1.0.1k  
imap 
SSL Support     enabled  
openssl
OpenSSL support     enabled OpenSSL  
Library Version     OpenSSL 1.0.1k 8 Jan 2015 OpenSSL Header Version  
OpenSSL 1.0.1k 8 Jan 2015  Directive    Local Value Master Value  
openssl.cafile  no value    no value openssl.capath no value    no value     
Phar  
OpenSSL support     enabled  

나는 Debian 7의 이전 구성 파일을 사용했습니다(NGinx는 동일한 버전입니다. 저는 D7에서 백포트를 사용했습니다).

서버 및 소프트웨어:
서버 A: 메일서버, Debian 6, Postfix, 자체 서명 인증서
서버 B: Debian 8, Nginx, PHP, EspoCRM - TLS가 내 로컬 PC의 Thunderbird에서 작동하고 Debian 7에서 8로 업그레이드하기 전에 작동했기 때문에 TLS를 선택했습니다.
로컬 PC: Kubuntu, Thunderbird, Mails는 TLS를 통해 보내고 받을 수 있습니다.

답변1

내가 이해하는 바에 따르면, PHP 5.6에서는 자체 서명된 인증서의 유효성 검사 또는 처리를 허용하지 않습니다.

http://php.net/manual/en/migration56.openssl.php

피어 및 피어 이름 확인을 비활성화해야 합니다.

$streamContext = stream_context_create([
            'ssl' => [
                'verify_peer'      => false,
                'verify_peer_name' => false
            ]
        ]);

(설계에 따른 것으로 보이는) 패키지 내에서 이를 수행하려는 경우 이는 사소한 일이 아니며 php.ini 또는 이와 유사한 간단한 플래그를 설정할 수는 없습니다.

답변2

500 TLS를 통해 연결할 수 없습니다

이는 문제가 어디에 있는지 식별하는 데 별로 도움이 되지 않습니다. 그러나 아마도 유지 관리하지 않는 코드 어딘가에 있을 것이므로 문제가 작동하도록 코드를 수정하는 것은 최후의 수단이 되어야 합니다.

어떤 작업이 이 오류를 유발하는지 아는 것이 유용할 것입니다.

매니페스트에서 자체 서명된 인증서를 언급하는 유일한 위치는 메일 서버이므로 여기서는 이것이 문제의 원인이라고 가정하겠습니다.

여러분이 해야 할 일은 애플리케이션이 상주하는 호스트의 승인된 기관에 자체 서명된 인증서를 추가하는 것뿐입니다. (다시) MTA가 SMTPS를 사용한다고 가정합니다.

openssl s_client -showcerts -connect servera.example.com:465 </dev/null

인증서 체인을 제공합니다. 출력을 (예를 들어) 복사한 /etc/ssl/certs/lbutlr_local.crt다음 실행합니다.update-ca-certificates

관련 정보