私は次の設定をしています:
SSLクライアント証明書を必要とするサーバーが2つあります。証明書は認証に使用されます。
ユーザー(ブラウザーを使用)は、クライアント証明書を使用してServer1に要求を行います。ここまでは順調ですね。さて、私がやりたいこと:Server1はServer2にリクエストを行い、そのレスポンスを解析してユーザーに返します。
Server1はphp_curlを使用してリクエストを実行します。Server1に(ユーザーの)元のクライアント証明書をServer2(ユーザーを検証する..)に渡してもらいたい。Server1は、ユーザーに代わって'投稿します。
これは可能ですか?
ApacheではExportCertDataSSLOptionが有効になっています。私はすでに次のヘッダーをcurlオプションに追加しようとしました(これはクライアント証明書を使用したApacheプロキシのセットアップとほぼ同じであると考えています)。
$headers[] = "SSL_CLIENT_S_DN: ".$_SERVER['SSL_CLIENT_S_DN'];
$headers[] = "SSL_CLIENT_I_DN: ".$_SERVER['SSL_CLIENT_I_DN'];
$headers[] = "SSL_SERVER_S_DN_OU: ".$_SERVER['SSL_SERVER_S_DN_OU'];
$headers[] = "SSL_CLIENT_VERIFY: ".$_SERVER['SSL_CLIENT_VERIFY'];
$headers[] = "SSL_CLIENT_V_START: ".$_SERVER['SSL_CLIENT_V_START'];
$headers[] = "SSL_CLIENT_V_END: ".$_SERVER['SSL_CLIENT_V_END'];
$headers[] = "SSL_CLIENT_M_VERSION: ".$_SERVER['SSL_CLIENT_M_VERSION'];
$headers[] = "SSL_CLIENT_M_SERIAL: ".$_SERVER['SSL_CLIENT_M_SERIAL'];
$headers[] = "SSL_CLIENT_CERT: ".$_SERVER['SSL_CLIENT_CERT'];
$headers[] = "SSL_CLIENT_VERIFY: ".$_SERVER['SSL_CLIENT_VERIFY'];
$headers[] = "SSL_SERVER_M_VERSION: ".$_SERVER['SSL_SERVER_M_VERSION'];
$headers[] = "SSL_SERVER_I_DN: ".$_SERVER['SSL_SERVER_I_DN'];
$headers[] = "SSL_SERVER_CERT: ".$_SERVER['SSL_SERVER_CERT'];
しかし、それらには運がありません。