開発環境およびテスト環境では、XMLRPC Webサービスに自己署名SSL証明書を使用しています。プロダクションは優れたサードパーティの証明書を使用しており、証明書の検証は問題なく動作します。Frontier :: Client/LWPを停止してCGI :: Application WebアプリケーションのSSL証明書を検証する方法は?
CGI :: Applicationウェブアプリケーションである呼び出し側アプリケーションのコードでは、開発者とテスト環境のSSL証明書の確認をスキップして、失敗するかどうかを知り、失敗するか試してみるそれをスキップします。 0に$ ENV {PERL_LWP_SSL_VERIFY_HOSTNAME}を設定するにもかかわらず、呼び出しがまだで失敗します。
Error executing run mode 'myRunMode': 500 Can't connect to mydomain.com:443 (certificate verify failed)
の束(おそらく、今では非推奨?)他のenv変数が試されていると我々は、このエラーで周りを取得するように見えることはできませんウェブアプリ。コマンドラインで、はすべての同じコードでcertの検証を無視して成功し、我々はすべてのPerlモジュールのバージョンを比較しています(LWPはどちらの場合も6.15です)。
SSLバックエンドが使用されているため、さまざまなシナリオがオンラインで説明されているため、LWP :: Protocol :: httpsのインストールを試したところ、少なくとも異なる動作をしました。私たちは、モジュールがインストールさだけではなく、後にこれで失敗しました:
Error executing run mode 'myRunMode': 404 Not Found
404はLWPを削除し、悲しいかな、赤ニシンのように思えるが、:: Protocal :: httpsの背中に私たちを取得エラー「証明書の検証に失敗した」ので、私たちは何かに乗っているようです。
このCGI :: Application環境で証明書検証をスキップする方法については、誰も知りませんか?
...
任意のフロンティアコードまたはものを変更する必要はありませアンバンドルされているので、HTTPSの使用を開始するためにもインストールされている必要があります。私の 'L :: P :: https'モジュールを動かすと、LWP :: Protocol :: httpsモジュールがインストールされていると、" LWPはhttps URLをサポートします "エラー。デバッグに役立つひとつのことは、 'perl -MCarp :: Always'が常にスタックトレースを与えることです。 \ n "、$ _、$ INC {$ _}、qx#md5sum $ INC {$ _}#=〜/ ^(%s、>%s) \ S +)/)ソートキー%INC; 'を使用して、実際に使用されているモジュールのリストを表示します。 – mbethke
最新の[LWP :: UserAgent doc](http://search.cpan.org/~ether/libwww-perl-6。libwww-perlコアはSSL用のプロトコルプラグインをバンドルしていないので、https-URLを処理するためのサポートを有効にするには、LWP :: Protocol :: httpsを個別にインストールする必要があります。 – Marcus
はい、それは私の主張でした: 'LWP :: Protocol :: https'はLWPに付属していましたが、ご使用のバージョンではすでに使用されていません。あなたがこのモジュールをインストールしなくても何かが証明書をチェックしているならば、奇妙なことが起こっています。したがって、 '%INC'をダンプする私の提案。 – mbethke