0

Apache のプロキシ モジュールを使用しているときに HTTPS エンドポイントに投稿しようとすると、いくつかの問題が発生します。HTTP エンドポイントへの投稿は正常に機能します。私は Apache の設定にかなり慣れていないので、私が何を間違っているのかについて、あなたの 1 人が何らかの洞察を持っていることを願っています。Google は、この特定の問題について私をあまり助けてくれませんでした。私が既に読んだスレッドの例は次のとおりです (これ以上リンクを投稿するのに十分な評判がありません)。

  • SOAP faultcode env:Client
    • SOAP リクエストが SoapUI 経由で機能することを確認したので、アクセスしようとしているサービスに問題があるようには見えません。

サーバー Web サイトのエンドポイントの例は、プロキシにもホストされています: http://websiteAndProxyServer.com

Post するエンドポイントの例: https://secureServer.com/AccessManagerSOAP

私がやろうとしていることの一般的な考え方は次のとおりです。

HTTP -> プロキシ -> HTTPS

プロキシを使用すると、クロスドメイン リクエストの問題を回避できます。

アパッチのバージョン: 2.2.21

jQuery 投稿リクエスト:

var url = "http://websiteAndProxyServer.com/idm/AccessManagerSOAP";
        $.ajax({
                url:url,
                type:'POST',
                data: loginRequest,
                success: createUserAndAuthenticateSuccess,
                error: createUserAndAuthenticateError
       });

httpd.conf 内の関連する Apache 構成:

#=============mod-proxy==================
#       UnComment the proxy_module, proxy_balancer_module & proxy_ajp_module below to
#       use ModProxy for enabling different JSessionID cookie names to be provided.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

SSLProxyEngine On

ProxyPass /remote/ http://nonRelatedServer.net:8082/
ProxyPass /idm/ https://secureServer.com/

httpd-ssl.conf 内の関連する Apache 構成

##
## SSL Virtual Host Context
##
NameVirtualHost *:443

<VirtualHost _default_:443>
   DocumentRoot "/usr/local/apache2/htdocs"
#  ServerName websiteAndProxyServer.com
#   ServerAlias www.dummy-host.example.com
   ErrorLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/localhost/error_log.%Y-%m-%d 86400"
   CustomLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/localhost/access_log.%Y-%m-%d 86400" vcombined2
   RewriteEngine on
   RewriteOptions inherit

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
#SSLEnable  #I get an error if this is un-commented
SSLEngine on
SSLProxyEngine on

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
SSLCipherSuite DEFAULT:!ADH::RC4+RSA:+HIGH:+MEDIUM:!LOW:!SSLv2:+eNULL

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
#SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt

SSLProxyCACertificateFile /usr/local/apache2/conf/ssl.crt/iam.crt
#SSLProxyCACertificateFile /usr/local/apache2/conf/ssl.crt/server.crt

宛先 URL から証明書を取得し、上記の iam.crt 参照でそれらを参照しようとしました。それは違いを生むようには見えませんでした。

上記の構成では、次の結果が返されます。

<?xml version='1.0' ?>
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Body>
<env:Fault>
<faultcode>env:Client</faultcode>
<faultstring>Internal Error</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>

返される HTTP コードは 200 であることに注意してください。SoapUI を介して上記のエンドポイントに同様の要求を送信すると、成功が返されるので、構成またはアクセス許可に関係している必要があります。不足している構成に他に何かありますか?

任意の提案をいただければ幸いです。

4

1 に答える 1