web-dev-qa-db-ja.com

Apache SSLプロキシがクライアント証明書を見つけることができませんか?

私のWebサーバーは、ファイアウォールの背後にあるサードパーティのサーバーと統合する必要があります。ファイアウォールを通過するには、すべてのリクエストが同じIPアドレスから送信され、SSL経由で認証される必要があります。そこで、プロキシとして機能するはずのマシンをセットアップし、すべてのトラフィックをSSL経由でサードパーティのサーバーに転送します。

証明書と一致するキーファイルを使用してプロキシを設定し、証明書とキーファイルを使用して、CURL経由でサードパーティサービスに正常にリクエストを送信できます。これらのリクエストを通過させるために、Apacheの仮想ホストを増強しましたが、リモートサーバーとのSSLハンドシェイクが失敗したというエラーが表示され続けます。 Apacheログに次のエラーメッセージが表示されます。

プロキシクライアント証明書コールバック:(:443)ダウンストリームサーバーはクライアント証明書を要求しましたが、構成されていません[Sun Jul 29 01:40:48 2012] [エラー](502)不明なエラー502:プロキシ:パスリクエストの本文が<サードパーティIP >:18443(<サードパーティのURL>)
[Sun Jul 29 01:40:48 2012] [error] [client] proxy:Error in SSL Handshake with remote server returned by /

私のApache仮想ホスト構成は次のようになります。

<VirtualHost *:18443>
    ServerName <Proxy IP>
    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile /etc/Apache2/ssl/my_server.pem
    SSLCertificateKeyFile /etc/Apache2/ssl/my_server.key
    SSLProxyCACertificatePath /etc/ssl/certs
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    ProxyPass / https://<3rd party server address>:18443
    ProxyPassReverse / https://<3rd party server address>:18443
</VirtualHost>

ありがとうございました!どんな助けでも大歓迎です!

4
ajmurmann

その証明書ファイルをプロキシバックエンドへの認証メカニズムとして使用するようにApacheを設定する必要があります。

.pemおよび.keyを1つのファイルに入れ、次のように指定します。

SSLProxyMachineCertificateFile /path/to/combined.pem
4
Shane Madden

彼が本当に求めているのは、SSL要求をエンドポイントサーバー(おそらくアプリケーションサーバー)にプロキシし、SSLクライアント証明書認証を行うApacheです...

この場合、SSLProxyMachineCertificateFileは役に立ちません。このファイルには、Apacheサーバーがアプリケーションサーバーで自分自身を認証するための証明書が含まれているためです。これは望ましくありません。呼び出し側のクライアントが自分の証明書を使用する必要があります。

おそらく、Apacheが取得した証明書情報をアプリサーバーに渡すことができるはずです。 AJP経由ですが、これまでのところ、これを機能させることはできません。私はそれが機能するようになったら、私はこの答えを試して更新します...

2
Peter

同じエラーがありました。現在のProxyPassディレクティブと一致しない構成済みのピア名に問題がある可能性があります。事実、私はlocalhostでサービスにアクセスします。次の設定行は私のために働きました:

_SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPass "/api/" "https://localhost:18443/api/"
_

@ ajmurmannからのコメント)に感謝

しかし、メッセージProxy client certificate callback: (:443) downstream server wanted client certificate but none are configuredはまだエラーログにありますが、リクエストは機能しています。

0
Trendfischer