自己署名証明書はNGinx/PHPで問題を引き起こす

自己署名証明書はNGinx/PHPで問題を引き起こす

Debian 7、Nginx 1.6.2、PHP 5.4.39 を Debian 8、Nginx 1.6.2、PHP 5.6.9 にアップグレードしました。
そのサーバーでは CRM が稼働しており、以前は PHP 経由でメールを送信していました。EspoCRM は 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、メールは 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

関連情報