kusanagi-php7 7.2.5-1でcURLなどからの外部HTTPSサイトへの接続でエラー

TOP Forums バグ報告と提案(Requests and Feedback) kusanagi-php7 7.2.5-1でcURLなどからの外部HTTPSサイトへの接続でエラー

kusanagi-php7 7.2.5-1でcURLなどからの外部HTTPSサイトへの接続でエラー

Viewing 7 reply threads
  • Author
    Posts
    • #392
      yousan
      Participant

        こんにちは。

        NGINX + PHP-FPM(7.2.5-1)を利用していて、相手方の証明書にエラーはなさそうなのですが( https://twitter.comhttps://facebook.com など)、外部サイトへのHTTPS接続時にエラーが出ます。

        Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mnt/example.com/test.php on line 4
        
        Warning: file_get_contents(): Failed to enable crypto in /mnt/example.com/test.php on line 4
        
        Warning: file_get_contents(https://example.com/test.jpg): failed to open stream: operation failed in /mnt/example/test.php on line 4

        利用しているバージョンは下記です。
        kusanagi-php7.noarch 7.2.5-1 @kusanagi

        同じコードをkusanagi(PHP-FPM 7.0系)で動かすとエラーは出ません。

        下記のように相手方SSLの認証を入れないようにすると動きます。
        https://teratail.com/questions/83578

        またHHVM (Version 3.19.2-dev)にするとエラーはでません。
        今回の件について: https://qiita.com/yousan/items/4c98cbee20b2d89e91a3

        opensslのデフォルトコンフィグが変わってしまったことなどが原因かなと推測していますが…、調査や解決の方法などありそうでしょうか?

      • #399
        collne
        Participant

          こんにちは。
          私もnginx php7 で運用していますが同じ症状を確認しています。
          証明書もいくつか変えてみましたが変わりありませんでした。

        • #400
          yousan
          Participant

            @collne
            どうもです! ちょうど先ほど解決できました。
            今記事にまとめていますが下記のように証明書を指定すれば解決しそうです。

            sudo git diff /etc/php7.d/php.ini
            diff --git a/php7.d/php.ini b/php7.d/php.ini
            index f122a10..254264d 100644
            --- a/php7.d/php.ini
            +++ b/php7.d/php.ini
            @@ -1864,6 +1864,7 @@ ldap.max_links = -1
             ; be overridden on a per-stream basis via the "cafile" SSL stream context
             ; option.
             ;openssl.cafile=
            +openssl.cafile=/etc/ssl/certs/ca-bundle.crt
            
             ; If openssl.cafile is not specified or if the CA file is not found, the
             ; directory pointed to by openssl.capath is searched for a suitable
            
          • #401
            yousan
            Participant

              Qiitaにまとめました。
              証明書を指定すれば解決しました。

              https://qiita.com/yousan/items/dc2cc789dcb0f07a61dc

            • #402
              collne
              Participant

                うまく行きました!
                ありがとうございます。

                しかし、初期値ではどこの証明書を見に行ってるんでしょうね。
                PHP5.6の時は、ここは設定しなくても大丈夫だという事は、やはり初期のファイルパスがあるような気がします。

              • #403
                yousan
                Participant

                  @collne

                  うまくいけてよかったですー。

                  そうなんです、過去のバージョンだと指定しなくても問題なかったですよね。
                  PHPか、opensslモジュールのバージョンアップでデフォルトが変わったっぽいですよね。

                • #404
                  優也田島
                  Keymaster

                    上記問題の件、下記のKUSANAGIのアップデートで対応致しました。

                    KUSANAGIモジュール更新情報

                  • #405
                    collne
                    Participant

                      早速のアップデート、ありがとうございます。

                  Viewing 7 reply threads
                  • You must be logged in to reply to this topic.

                  Next article

                  フォーラムについて