アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前、mod_sslの導入について質問させていただき、無事導入完了したのですが、
ssl通信がうまくいきません。

ご質問内容

(1)バックエンドのwebサーバとhttps通信する設定方法をを教えてください。
 httpd.confもしくはssl.confどちらに設定するかも含めてご教示ください。
(2)必要な設定ファイル(証明書関連)があればそちらもご教示ください。

図の様なシステム構成でWebサーバAのApache設定です。

httpd.confの設定です。

<VirtualHost *:80>
ServerName hogehoge.example.com
RewriteEngine On
SSLProxyEngine on
RewriteRule ^/httpstest/(.*) https://192.168.1.1/ [P]
SSLEngine on
SSLCertificateFile /tmp/cert/server.pem
SSLCertificateKeyFile /tmp/cert/serverkey.pem
</VirtualHost>

SSLCertificateFile:プライベート認証局で作成したWebサーバBのサーバ証明書
SSLCertificateKeyFile:WebサーバBで作成した秘密鍵


SSL設定をしない場合はクライアントにWebサーバBのhtml画面が表示されます。


SSL設定をすると
Apacheのaccess_logに
192.168.1.1 - - [09/Dec/2010:16:24:20 +0900] "GET /" 400 557 "-" "-"と出力され、ブランク画面が表示されます。

error.logに出力はありません。

ssl_error_logに
[Thu Dec 09 16:39:33 2010] [warn] RSA server certificate CommonName (CN) `xxxxxxx.local.domain' does NOT match server name!?
と出力されますが、Ariasの問題らしいのでSSL設定とは直接関係無いようです。


よろしくお願いいたします

「Apacheのssl設定について」の質問画像

A 回答 (3件)

> WebサーバBの証明書をWebサーバAに設定する


> 必要無いということでよろしいでしょうか?

はい。WebサーバBの証明書をWebサーバAに設定する
必要はありません。

> その場合、サーバ間の暗号化/複合化はどこで
> 実行することになりますか?

WebサーバA と Webサーバ B の間で、SSL による暗号化
通信が行われますが、それはWebサーバBに設定された
証明書に基づいて行われます。

> クラインのブラウザ(IE)で証明書要求のポップアップは
> 表示されないのでしょうか?

クライアントとWebサーバAとはSSL通信を行なっていないので、
証明書要求のポップアップなどは出ません。
    • good
    • 0
この回答へのお礼

t-okura様

ご回答ありがとうございます。

SSLの暗号/複合化はクライアント側で実行すると思っていたので、WebサーバBのクライアントとなるWebサーバAに証明書の設定(SSLの設定)が必要と思っていました。

SSLの処理はApache同士の通信の場合は、サーバ側での処理になるのですね。


申し訳ないのですが、後学までに、できれば出典を教えていただけないでしょうか?
もう少し理解を深めてみたいと思います。

本当にありがとうございました。

お礼日時:2010/12/26 22:37

出展として提示できるものはありません。



少し私自身が勘違いしていないか確認の必要なところもあります。
まず提示された http.conf の virtual host のポートが 80 に
なっているので、ブラウザからのアクセスは、非SSL で行うと
解釈しました。 非SSL 通信であれば、ブラウザとWebサーバA
間の通信は暗号化されません。

もし、ここの部分で SSL通信することを想定されているなら
https://WebA:80/ のようにアクセスすることを想定されている
なら、
SSLEngine on
SSLCertificateFile /tmp/cert/server.pem
SSLCertificateKeyFile /tmp/cert/serverkey.pem
の設定は、WebサーバAにも必要です。

また、WebサーバAからWebサーバBへのプロキシーには
https://192.168.1.1/ とSSL通信することを指定しています。
したがって、WebサーバAはWebサーバBのコンテンツをSSL通信で
取得し、平文にもどしたコンテンツをアクセス元のブラウザに
返します。
    • good
    • 0
この回答へのお礼

t-okura様

ご回答ありがとうございます(お礼が遅くなりました)。

>まず提示された http.conf の virtual host のポートが 80 に
>なっているので、ブラウザからのアクセスは、非SSL で行うと
>解釈しました。
はい、クライアントからWebサーバAへのアクセスはhttpになります。
リライトルールに則ったURLの場合、リバースプロキシ機能でWebサーバBにリクエストを転送する想定です。


教えていただいた通りにWebサーバAのhttpd.confに設定をし、WebサーバBにサーバ証明書、秘密鍵を導入しました。

クライアントからリライトルールに則ったWebサーバAのURLを指定したところ、WebサーバBのhtmlファイルを表示できました。

WebサーバBのsslアクセスログにWebサーバAからのリクエスト、および正常応答が出力されていることも確認できました。

>出展として提示できるものはありません。
無理をお願いして申し訳ありませんでした。
後はリーダーをうまく説得できるかですが、頑張ってみます。

本当にありがとうございました。

お礼日時:2010/12/29 20:26

クライアントがWebサーバ A に https でアクセスしないのであれば、


SSLEngine on
SSLCertificateFile /tmp/cert/server.pem
SSLCertificateKeyFile /tmp/cert/serverkey.pem
は不要です。

この回答への補足

t-okura様

早速のご回答ありがとうございます。

いくつか補足させてください。

クライアントはWebサーバ Aのプロキシを経由してWebサーバBの画面を表示する想定です。

WebサーバAとWebサーバB は httpsで通信する(rewrite先URLにhttpsプロトコルを指定)のですが、WebサーバBの証明書をWebサーバAに設定する必要無いということでよろしいでしょうか?
その場合、サーバ間の暗号化/複合化はどこで実行することになりますか?
また、クラインのブラウザ(IE)で証明書要求のポップアップは表示されないのでしょうか?

質問ばかりで申し訳ありませんがご教示ください。

補足日時:2010/12/26 17:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!