--> -->

skimemo


skimemo - 日記/2018-08-06/TCPDFでSSL operation failedが出るので対処してみた のバックアップ(No.1)


_ TCPDFでSSL operation failedが出るので対処してみた

tcpdfを使用していて、特定の環境ではhttpsのimageが取得できない事例が発生しました。
相手先のSSL証明書はもちろん正しく設定されていて、SSL通信もTSL1.2で行われているのにも関わらずです。
エラーの原因はこれです。

file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

ググると沢山出てきますが、このfile_get_contents()に限らず、ファイルから情報を取得する様々な関数でエラーになります。

エラーの出るサーバーでも別のバージョンのPHPで実行すると問題なかったりするので、サーバー側の環境をごにょごにょする方法もありますが、「PHPのバージョンを上げたら発生した」みたいな事例も多いようで、将来的に発生する可能性を潰すためTCPDF側に手を入れました。

なお、この方法は画像取得先のSSL証明書を無視します。意図しない画像をTCPDFに通す可能性がある場合は危険ですので適用しないでください。

変更するファイルは3つです。
■/tcpdf/include/tcpdf_images.php
168行目付近

-		$a = getimagesize($file);
+		$a = getimagesizefromstring(self::file_get_contents_with_noverify($file));

■/tcpdf/include/tcpdf_static.php ■/tcpdf/tcpdf.php

Category: [Linux] - 09:25:08