Apacheのssl設定について

このQ&Aのポイント
  • Apacheのssl設定に関する質問内容と設定方法について
  • Apacheのssl設定に関する問題とエラーログの内容について
  • Webサーバとhttps通信するための必要な設定ファイルについて
回答を見る
  • ベストアンサー

Apacheのssl設定について

以前、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/$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設定とは直接関係無いようです。 よろしくお願いいたします

  • RF900
  • お礼率85% (6/7)

質問者が選んだベストアンサー

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

> WebサーバBの証明書をWebサーバAに設定する > 必要無いということでよろしいでしょうか? はい。WebサーバBの証明書をWebサーバAに設定する 必要はありません。 > その場合、サーバ間の暗号化/複合化はどこで > 実行することになりますか? WebサーバA と Webサーバ B の間で、SSL による暗号化 通信が行われますが、それはWebサーバBに設定された 証明書に基づいて行われます。 > クラインのブラウザ(IE)で証明書要求のポップアップは > 表示されないのでしょうか? クライアントとWebサーバAとはSSL通信を行なっていないので、 証明書要求のポップアップなどは出ません。

RF900
質問者

お礼

t-okura様 ご回答ありがとうございます。 SSLの暗号/複合化はクライアント側で実行すると思っていたので、WebサーバBのクライアントとなるWebサーバAに証明書の設定(SSLの設定)が必要と思っていました。 SSLの処理はApache同士の通信の場合は、サーバ側での処理になるのですね。 申し訳ないのですが、後学までに、できれば出典を教えていただけないでしょうか? もう少し理解を深めてみたいと思います。 本当にありがとうございました。

その他の回答 (2)

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.3

出展として提示できるものはありません。 少し私自身が勘違いしていないか確認の必要なところもあります。 まず提示された 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/$1 とSSL通信することを指定しています。 したがって、WebサーバAはWebサーバBのコンテンツをSSL通信で 取得し、平文にもどしたコンテンツをアクセス元のブラウザに 返します。

RF900
質問者

お礼

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からのリクエスト、および正常応答が出力されていることも確認できました。 >出展として提示できるものはありません。 無理をお願いして申し訳ありませんでした。 後はリーダーをうまく説得できるかですが、頑張ってみます。 本当にありがとうございました。

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

クライアントがWebサーバ A に https でアクセスしないのであれば、 SSLEngine on SSLCertificateFile /tmp/cert/server.pem SSLCertificateKeyFile /tmp/cert/serverkey.pem は不要です。

RF900
質問者

補足

t-okura様 早速のご回答ありがとうございます。 いくつか補足させてください。 クライアントはWebサーバ Aのプロキシを経由してWebサーバBの画面を表示する想定です。 WebサーバAとWebサーバB は httpsで通信する(rewrite先URLにhttpsプロトコルを指定)のですが、WebサーバBの証明書をWebサーバAに設定する必要無いということでよろしいでしょうか? その場合、サーバ間の暗号化/複合化はどこで実行することになりますか? また、クラインのブラウザ(IE)で証明書要求のポップアップは表示されないのでしょうか? 質問ばかりで申し訳ありませんがご教示ください。

関連するQ&A

  • virtual hostの設定について

    おたずねします。環境設定についてはまったくの初心者です。 URLとwebサーバのディレクトリを結びつける設定は どこをみればよいでしょうか? ほとんどの設定がhttpsd.confにあり、おそらく httpsd.confにあるだろうとあたりをつけて調べているのですが、 下記のようにVirtualHostの設定はみつけたのですが Port 999から先が追えません。 <VirtualHost _default_:999> Port 999 SSLCertificateKeyFile /usr/share/ssl/private/key.pem SSLCertificateFile /usr/share/ssl/certs/httpsd.pem SSLVerifyClient 0 SSLVerifyDepth 10 SSLFakeBasicAuth DocumentRoot /home/sslhtdocs/hogehoge AddType application/x-httpd-cgi .cgi </VirtualHost> hogehoge配下のindex.htmlをhttps://hogehoge2.com/で参照するためには 他にどのような設定が必要なのでしょうか? よろしくご指導願います。

  • サーバーのSSL認証設定について

    SSLを設定しようとしているのですが、インストールが上手くいきません。 環境はOpenSSL + Apacheになります。 証明書は発行済でSSL証明書ファイル、中間証明書ファイル、秘密鍵ファイル は既にサーバーに保存しております。 --(example.comは適当です)----------------------- コモンネーム:www.example.com SSLサーバ証明書ファイル名     wwwexamplecom.crt 中間証明書ファイル名         inter.crt 秘密鍵ファイル名         wwwexamplecom.key SSLサーバ証明書の保存先   /etc/httpd/conf/ssl/crt/ 中間証明書の保存先     /etc/httpd/conf/ssl/crt/ 秘密鍵の保存先       /etc/httpd/conf/ssl/key/ ------------------------------------------------ スペル、保存先に間違いはないことは確認しております。 また、ssl.conf設定ファイルはありません。 サーバー amazon ec2 web server Apache ver2.2.16 【httpd.conf 記載の一部】 <VirtualHost ***.**.***.***> ServerAdmin root@**** DocumentRoot /home/aff3_0/public_html ServerName http://www​.example.com ServerAlias example.com ErrorLog logs/error_log CustomLog logs/access_log combined SSLEngine on SSLCertificateFile /etc/httpd/conf/ssl/crt/wwwexamplecom.crt SSLCACertificateFile /etc/httpd/conf/ssl/crt/inter.crt SSLCertificateKeyFile /etc/httpd/conf/ssl/key/wwwexample.key </VirtualHost> 【エラーメッセージ】 Invalid command 'SSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration この時点で止まっております。 アドバイスを頂けると有難いです。 足りない情報などがあれば追記します。 宜しくお願い致します。

  • apacheのSSLクライアント認証がうまくいきません

    apacheのSSLクライアント認証がうまくいきません apache1.3.41とmod_sslを利用してクライアント認証を実装しようとしているのですが クライアント認証を有効にするとhttps接続時に証明書提示した後に「ページを表示できません」となってしまいます。 手順は以下のサイトを参考に設定したものです http://www.aconus.com/~oyaji/www/apache_linux_ssl.htm 証明書の発行もインストールも特に問題なくできましたが、接続時にクライアント証明書を提示しても「ページを表示できません」と出てしまいます。ssl_engine_logにもerror_logにもそれらしいエラーが見当たらないのでそれ以外のところに原因があるのでしょうか。 httpd.confの一部(デフォルトからSSLの部分を変更した部分だけ)を展開します。 どこか間違いがあればご指摘よろしくおねがいします。 また、この現象の原因が分かる方がいらっしゃればご教授願います。 <VirtualHost _default_:443> DocumentRoot "/home/xxxxx/webIndex" ServerName 192.168.11.2 ServerAdmin xxx@xxxxxxx.xxx DirectoryIndex login.html ErrorLog /usr/local/apache/logs/error_log TransferLog /usr/local/apache/logs/access_log SSLEngine on SSLCertificateFile /usr/local/apache/conf/ssl.crt/servercert.pem SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/serverkey.pem SSLCACertificatePath /usr/local/apache/conf/ssl.crt SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem SSLVerifyClient require SSLVerifyDepth 1     ・     ・     ・ </VirtualHost> ちなみにクライアント認証の部分をコメントアウトしてサーバ証明書だけ有効にすると正常に ページにアクセスできますので、クライアント認証の設定の部分に問題があるのみたいなのですが 起動ができるので設定以外のところに問題があるようにも思えます。 #SSLCACertificatePath /usr/local/apache/conf/ssl.crt #SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem #SSLVerifyClient require #SSLVerifyDepth 1 以上です 宜しくお願いします。

  • SSL証明書の複数設定方法

    1サーバーに複数のWEBシステムがあります。(複数URL) 認証局によるSSL証明書がURL単位で発行される場合、 複数の証明書を設定するには、Apacheの設定はどうすればよいでしょうか。 OSはSectos5.0を使っています。 ssl.confの SSLCertificateFile /etc/httpd/conf/server.crt このファイルに証明書の記述内容を追加するのでしょうか。 SSLCertificateFile /etc/httpd/conf/server1.crt  SSLCertificateFile /etc/httpd/conf/server2.crt のように複数行設定するのでしょうか。 よろしくお願いします。

  • apache,ssl,virtualhost

    VPS上にいくつかのサブドメインでバーチャルホスト(名前ベース)を運用しています。 実現したいのは以下の設定です。  ブラウザに入力されたURL => リダイレクト先 (1)http://hoge.net => https://hoge.net (2)http://www.hoge.net => https://hoge.net (3)https://www.hoge.net => https://hoge.net SSL証明書が有効なのは、『hoge.net』と『hige.hoge.net』です。『www.hoge.net』は有効ではありません。 wwwについては、あっても無くてもアクセス可能とし、あった場合はリダイレクト(いわゆる無しで統一)したいので、設定してあります。 (1)と(2)は問題ないのですが、ブラウザに(3)を入力するとセキュリティの警告エラーが出てしまいます。 その警告を無視して進むとリダイレクトされて、正常に表示されます。 SSL証明書の追加取得以外で、この警告を回避してリダイレクトする方法を教えていただきたいです。 環境:apache2.2 設定内容:httpd.confではなくvhost.confファイルに下記を記述。(見易いように、先頭空白を全角に変更してあります。) <Directory /var/www/html/*/public_html>   Options FollowSymLinks   AllowOverride All   Order allow,deny   Allow from all </Directory> <VirtualHost *:80>   ServerName hoge.net   Redirect permanent / https://hoge.net </VirtualHost> <VirtualHost *:443>   ServerName hoge.net   DocumentRoot /var/www/html/hoge/public_html   SSLEngine on   SSLCertificateFile ++++++++++++++++   SSLCertificateKeyFile ++++++++++++++++ </VirtualHost> <VirtualHost *:80 *:443>   ServerName hige.hoge.net   DocumentRoot /var/www/html/hige/public_html   RewriteEngine on   RewriteCond %{HTTPS} off   RewriteRule . https://hige.hoge.net%{REQUEST_URI} [R=301,L]   SSLEngine on   SSLCertificateFile ++++++++++++++++   SSLCertificateKeyFile ++++++++++++++++ </VirtualHost> よろしくお願いいたします。

  • Apacheでhttpd-ssl.confエラー

    当方、windows7 32bitでwwwサーバを組んでいる超初心者です。 apacheは2.2.25、Active Perlは5.16.3.1で OpenSSLは1_0_1です。、 c/apache softoware Foundation c/perl c/openssl 以上の場所にインストールしています。 http://tako.jugem.cc/?eid=719 ここのサイトの説明通りにやりました。但し、openssl.cfg は c/apache softoware Foundation/apache2.2/conf/sslに入れましたが。 上記のサイトで > openssl req -config openssl.cfg -new -out ./ssl.key/server.csr 色々聞かれるので埋める とあり、色々埋めました。 Apacheのhttpd.confの変更、 httpd-ssl.confの変更も行いました。↓ SSLCertificateFile "C:/Apache Software Foundation/Apache2.2/conf/ssl/server.crt" SSLCertificateKeyFile "C:/Apache Software Foundation/Apache2.2/conf/ssl/server.key" と変更しました。 server.crtファイルも server.keyファイルも上記の場所にあるのですが、 これでapacheを起動すると The requested operation has faild! とエラーメッセージが出てしまいます。 httpd-ssl.confを有効にしなければ、apacheは普通に動いてくれます。 何が足りないのか、私には解りません。 考えうるエラーの原因が思い当たったらご教授願います。

  • ApacheにおけるSSLモジュールの動作

    以下の環境でssl通信(https)を計画しています。 OS:RedHat Linux AS 4 Web:Apache 2.0 Apache2.0からはsslのモジュールは標準機能だと思っているのですが、 httpd.confに次の様に設定するとエラーとなり、httpdが起動しません。 <VirtualHost *:443> ServerName hogehoge.example.com SSLProxyEngine on    ・    ・    ・ </VirtualHost> エラーの内容: Invalid command 'SSLProxyEngine', perhaps misspelled or defined by a module not included in the server configuration mod_sslがincludeされていないためと考え、httpd.confにmod_ssl.soを追加しましたが、mod_ssl.soが存在しないため、エラーとなり、やっぱり起動できません。 質問内容 (1)Apache 2.0 でSSLProxyEnginディレクティブの正しい定義の仕方を教えてください。 (2)必要であれば、mod_sslを追加で導入する手順について教えてください。  ApacheはDSOサポート環境です。(mod_so.cがあります) よろしくお願いいたします。

  • Apache起動時にエラー

    質問があります。 ApacheをSSLで起動し、IEからアクセスしようとしたら反応が遅く また、エラーログが大量に出ています。その後、表示ができませんと IEから出ています。 【ログ内容】 [notice] child pid XXXX exit signal Segmentation fault (11) また、Googleで調べたら、勘違いだったら申し訳ありません。 PHPからみで出るとかあったのですが、今回、とくにインストールしていません。知っている方が、いらっしゃったら教えてください。 環境としては、 OS Solaris10 Apache2.2.14とOpenSSL0.9.8lをソースでインストール 特に問題なくインストールできています。 切り分けで、OpenSSLをサンフリーからパッケージでインストールし Apacheをソースで再度、コンパイルしても現象は一緒でした。 OpenSSLの鍵・証明書の作成としては以下を実行 openssl genrsa -des3 -out server.key 1024 openssl rsa -in server.key -out server.key openssl req -new -key server.key -out server.csr -days 365  openssl x509 -in server.csr -out server.pem -req -signkey  server.key -days 365 httpd-ssl.confの設定 SSLCertificateFile /usr/local/apache2/conf/server.crt ↓ SSLCertificateFile /usr/local/apache2/conf/server.pem SSLCertificateKeyFile /usr/local/apache2/conf/server.key ↓(そのまま) SSLCertificateKeyFile /usr/local/apache2/conf/server.key http.confの設定 #Include conf/extra/httpd-ssl.conf ↓ Include conf/extra/httpd-ssl.conf 以上、よろしくお願いします。

  • apache2+mod_ssl-apache2+OpenSSL

    apache2+mod_ssl-apache2+OpenSSLで、 /etc/apache2/conf/httpd.confに <IfModule mod_ssl.c> /ect/apache2/conf.d/ssl.conf </IfModule> を追記、 /ect/apache2/conf.d/ssl.confは <VirtualHost 192.168.1.21:443>などを環境に合った設定にしました。 そしてapache2を再起動したのですが、以下のようになりました。 [root@localhost root]# /etc/init.d/apache2 restart httpdを停止中: [失敗] httpdを起動中: [Wed Sep 07 20:39:37 2005] [warn] module ssl_module is already loaded, skipping [Wed Sep 07 20:39:37 2005] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.1.21 (check DNS) -- or specify an explicit ServerName [Wed Sep 07 20:39:37 2005] [warn] VirtualHost 192.168.1.21:443 overlaps with VirtualHost 192.168.1.21:443, the first has precedence, perhaps you need a NameVirtualHost directive [Wed Sep 07 20:39:37 2005] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.1.21 (check DNS) -- or specify an explicit ServerName (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 no listening sockets available, shutting downUnable to open logs [失敗] /ect/apache2/conf.d/ssl.confを0バイトにすると、apache2は起動できました。 どの設定が悪いか分かる方いらっしゃいませんか?

  • 1つのIPアドレスでサブドメインをSSLにするには

    1つのIPアドレスでサブドメインをSSL通信にしたいと思います。 https://www.hoge.com https://geho.hoge.com しかしIPはひとつです。 その場合ジオトラストでワイルドカード証明書(サブドメインなら 無制限に増やせる)を取得して設定をしてみましたが設定がうまく行き ません。 流れとしてcentos5でhttpd.confにVirtualHostを設定しました。 こんな感じです。 <VirtualHost *:80> ServerAdmin admin@hoge.com DocumentRoot /var/www/www.hoge.com ServerName www.hoge.com ErrorLog /var/log/www.hoge.com.err CustomLog /var/log/www.hoge.com.log combined </VirtualHost> CSRを作成して認証してもらいssl.confの設定しました。 # General setup for the virtual host <VirtualHost *:443> DocumentRoot "/var/www/www.hoge.com" ServerName www.hoge.com:443 鍵も下記のように変更しました。 SSLCertificateFile /usr/local/certs/server.crt SSLCertificateKeyFile /usr/local/certs/server.key それでもなぜかドメインは一つかしか使えず、さらにhttpsで アクセスするとIEでは 「このページにはセキュリティで保護されている項目と保護されて いない項目が含まれます」 とエラーがでます。 サイトはPHPで構築したものですが小規模なサイトです。 非常に困っておりSSL通信をVirtualHost毎に行いたいと思います。 どうすれば良いかまったくわからない状態です。 アドバイスのほどよろしくお願いします。