Top過去ログ目次掲示板

作成日:2006年09月17日 作成:おやじ
掲示板で過去に質問された内容です。

No.6353 SSLについて


No.6353 投稿時間:2006年09月17日(Sun) 03:19 投稿者名:mizuho URL:
タイトル:SSLについて

初めまして。
いつも勉強させて頂いております。
今回、おやじ様の「WindowsサーバーへSSLの導入」を参考にさせて頂きまして試みました。
証明書の発行は特にエラーも行なえなく出来たのですが、レジストリの書き加えで「-D SSL」を書き加えるとApacheが動かないのですが、「-D ssl」とすると動作します。
小文字で書き加えて動作させたところ、SSLでサイトは見れませんでした(通常のhttpは見れます)
大文字で書き加えてもApacheが動作する設定でないと動作しないのでしょうか?

Apacheは2.059
Opensslは0.98のバージョンb
を使用しています。
またNAMEでバーチャルホストをしていますが削除してもSSLでは動きませんでした(httpでは見れます)


No.6354 投稿時間:2006年09月17日(Sun) 07:25 投稿者名:おやじ URL:
タイトル:小文字ではHTTPSは起動しないので、Apacheは起動します。

> 証明書の発行は特にエラーも行なえなく出来たのですが、レジストリの書き加えで「-D SSL」を書き加えるとApacheが動かないのですが、「-D ssl」とすると動作します。
> 小文字で書き加えて動作させたところ、SSLでサイトは見れませんでした(通常のhttpは見れます)

ここでいう、「動作します」はApacheがエラーなく起動するということですよね。
「netstat -an -p tcp」で443がlisten状態になっていて、HTTPSが起動できているか確認してください。パラメータミス(小文字)なので無視されてHTTPSは起動せず、ApacheはHTTP(80)だけ起動しているので、443はないはずです。「Apacheがエラーなく起動する」=「HTTPSも起動する」ではないので、何を確認すれば正常なのかを押さえることですね。

> 大文字で書き加えてもApacheが動作する設定でないと動作しないのでしょうか?

上記のとおりで、大文字でなければ起動しませんので、大文字で起動できないなら問題があるということです。
Windowsでこのようにソフト自体が起動できないときは、Apacheは起動していないのでApacheのログには何もでません。コンパネの管理ツールにあるイベントビューアを見るのが鉄則です。何かヒントがでていませんか?一般的には、証明書の作成がうまくいっていないケースが大半です。

> Apacheは2.059
> Opensslは0.98のバージョンb
> を使用しています。

おやじの環境では動いているので、バージョン問題はありません。

> またNAMEでバーチャルホストをしていますが削除してもSSLでは動きませんでした(httpでは見れます)

良くおやじのHPを見ていただけているようですね。説明が具体的でないので誤解されているようですが、証明書交換が実際のHTTPSでの通信前に行われるので、どのホスト名でアゥセスしてきたかわからないので、先頭のバーチャルホストの証明書で認証が行われます。従って、2番目以降のバーチャルホストへのアクセス時にCNが違うといわれてしまうので、実際には運用に不向きということです。毎回、これでも良ければ使えないわけではありません。つまり、これはApacheが起動する、しないということには関係ないということです。


No.6355 投稿時間:2006年09月17日(Sun) 12:46 投稿者名:mizuho URL:
タイトル:Re: 小文字ではHTTPSは起動しないので、Apacheは起動します。

おやじ様
ご返信ありがとうございます。

> ここでいう、「動作します」はApacheがエラーなく起動するということですよね。
記述が不完全で申し訳ありません。
はい、そうです。Apacheは起動するということです。


> 「netstat -an -p tcp」で443がlisten状態になっていて、HTTPSが起動できているか確認してください。パラメータミス(小文字)なので無視されてHTTPSは起動せず、ApacheはHTTP(80)だけ起動しているので、443はないはずです。「Apacheがエラーなく起動する」=「HTTPSも起動する」ではないので、何を確認すれば正常なのかを押さえることですね。

これはコマンドプロンプトでApacheに移動して行なえば宜しいのでしょうか?


> Windowsでこのようにソフト自体が起動できないときは、Apacheは起動していないのでApacheのログには何もでません。コンパネの管理ツールにあるイベントビューアを見るのが鉄則です。何かヒントがでていませんか?一般的には、証明書の作成がうまくいっていないケースが大半です。

イベントビューアには
「Name VirtualHost*443 has no VirtualHosts」
とでています。
証明書がおかしいのでしょうか。
IPベースの設定は初めてだったので、バーチャルホストの設定がおかしいのかなと思っているのですが。

> > またNAMEでバーチャルホストをしていますが削除してもSSLでは動きませんでした(httpでは見れます)
>
> 良くおやじのHPを見ていただけているようですね。説明が具体的でないので誤解されているようですが、証明書交換が実際のHTTPSでの通信前に行われるので、どのホスト名でアゥセスしてきたかわからないので、先頭のバーチャルホストの証明書で認証が行われます。従って、2番目以降のバーチャルホストへのアクセス時にCNが違うといわれてしまうので、実際には運用に不向きということです。毎回、これでも良ければ使えないわけではありません。つまり、これはApacheが起動する、しないということには関係ないということです。

という事は、aaa.jp bbb.jp という二つのドメインをNAMEベースでバーチャルホストにしていて、aaa.jp(先頭のドメイン)のみSSLに対応させたい場合は、NAMEベースでバーチャルホストを行なっていてもSSLは可能という事なのでしょうか?


No.6356 投稿時間:2006年09月17日(Sun) 15:10 投稿者名:おやじ URL:
タイトル:例を参考に切り分けて結果を教えてください。

> > 「netstat -an -p tcp」で443がlisten状態になっていて、HTTPSが起動できているか
確認してください。パラメータミス(小文字)なので無視されてHTTPSは起動せず、Apacheは
HTTP(80)だけ起動しているので、443はないはずです。「Apacheがエラーなく起動する」=
「HTTPSも起動する」ではないので、何を確認すれば正常なのかを押さえることですね。
> 
> これはコマンドプロンプトでApacheに移動して行なえば宜しいのでしょうか?

どこでも、大丈夫です。
 
> > Windowsでこのようにソフト自体が起動できないときは、Apacheは起動していないので
Apacheのログには何もでません。コンパネの管理ツールにあるイベントビューアを見るのが
鉄則です。何かヒントがでていませんか?一般的には、証明書の作成がうまくいっていない
ケースが大半です。
> 
> イベントビューアには
> 「Name VirtualHost*443 has no VirtualHosts」
> とでています。
> 証明書がおかしいのでしょうか。
> IPベースの設定は初めてだったので、バーチャルホストの設定がおかしいのかなと思って
いるのですが。

「IPベース」? おやじは、名前ベースでやられているのかIPベースなのかがわからず混乱してます。
 SSL関係のバーチャルホストの設定がおかしいのでは?
あまり、書きたくはないのですが例を示しますので、良く違いを見て順番に変更していってください。
一気にやると、直ってしまうだけで何が悪かったのかがわからなくなるので・・・。これは、
問題解決の基本的な方法です。
で、どこを直したら上記のエラーがなくなるかを教えてください。おやじも上記エラーが何をすると
出るのかがわからないので、勉強のためなのでコンフィグ例を示したので、よろしくお願いします。
下の例では2番目のbbb.jpでもHTTPSでアクセスできないわけではなく、CNが違うというエラーを
クライアントで許諾すれば、暗号化はできるので一応設定してあります。ただ、証明書は、aaa.jpの
ままです。bbb.jpを指定しても名前ベースでは無駄なので・・・。もちろんIPベースならOKですが。

[httpd.conf]
NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
    ServerAdmin webmaster@aaa.jp
    DocumentRoot C:\apache\htdocs\aaa
    ServerName aaa.jp
    ErrorLog logs/error_aaa.log
    TransferLog logs/access_aaa.log
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin webmaster@bbb.jp
    DocumentRoot C:\apache\htdocs\bbb
    ServerName bbb.jp
    ErrorLog logs/error_bbb.log
    TransferLog logs/access_bbb.log
</VirtualHost>

[ssl.conf]
<VirtualHost _default_:443>
    ServerAdmin webmaster@aaa.jp
    DocumentRoot C:\apache\htdocs\aaa
    ServerName aaa.jp
    ErrorLog logs/error_aaa.log
    TransferLog logs/access_aaa.log

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile conf/ssl.crt/server.crt
    SSLCertificateKeyFile conf/ssl.key/server.key

    <FilesMatch "\.(cgi|shtml|phtml|php3?)$">
      SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "c:/apache/cgi">
      SSLOptions +StdEnvVars
    </Directory>

    SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

    CustomLog logs/ssl_request_aaa.log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>                                  

<VirtualHost _default_:443>
    ServerAdmin webmaster@bbb.jp
    DocumentRoot C:\apache\htdocs\bbb
    ServerName bbb.jp
    ErrorLog logs/error_bbb.log
    TransferLog logs/access_bbb.log

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile conf/ssl.crt/server.crt
    SSLCertificateKeyFile conf/ssl.key/server.key

    <FilesMatch "\.(cgi|shtml|phtml|php3?)$">
      SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "c:/apache/cgi">
      SSLOptions +StdEnvVars
    </Directory>

    SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

    CustomLog logs/ssl_request_bbb.log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>                                  


> > > またNAMEでバーチャルホストをしていますが削除してもSSLでは動きませんでした(httpでは見れます)
> > 
> > 良くおやじのHPを見ていただけているようですね。説明が具体的でないので誤解されているようですが、
証明書交換が実際のHTTPSでの通信前に行われるので、どのホスト名でアゥセスしてきたかわからないので、
先頭のバーチャルホストの証明書で認証が行われます。従って、2番目以降のバーチャルホストへのアクセス時
にCNが違うといわれてしまうので、実際には運用に不向きということです。毎回、これでも良ければ使えない
わけではありません。つまり、これはApacheが起動する、しないということには関係ないということです。
> 
> という事は、aaa.jp bbb.jp という二つのドメインをNAMEベースでバーチャルホストにしていて、aaa.jp
(先頭のドメイン)のみSSLに対応させたい場合は、NAMEベースでバーチャルホストを行なっていてもSSLは可能
という事なのでしょうか?

書いてあるとおりですから、そういうことです。実験すれば書いてあるとおりになりますから、是非やってみてください。


No.6357 投稿時間:2006年09月17日(Sun) 22:56 投稿者名:mizuho URL:
タイトル:Re: 例を参考に切り分けて結果を教えてください。

> > > 「netstat -an -p tcp」で443がlisten状態になっていて、HTTPSが起動できているか
> 確認してください。パラメータミス(小文字)なので無視されてHTTPSは起動せず、Apacheは
> HTTP(80)だけ起動しているので、443はないはずです。「Apacheがエラーなく起動する」=
> 「HTTPSも起動する」ではないので、何を確認すれば正常なのかを押さえることですね。

コマンドを打ち込んでみました。
おやじ様の仰る通り、443はありませんでした。
Apache=HTTPSじゃないのですね。
一つ勉強になりました。ありがとうございます。

> 「IPベース」? おやじは、名前ベースでやられているのかIPベースなのかがわからず混乱してます。
混乱させてしまい、申し訳ありません。
NAMEベースで行なっていたのですが、IPベースじゃないと出来ないと記載されているのを見た際に、試しにIPベースにしてみたんです。
その際も見れなかったのですが、初のIPベースだったのと、IPできてもNAMEで出来ないと意味が無いと思い早々にNAMEベースに専念する事にしました。

> SSL関係のバーチャルホストの設定がおかしいのでは?
> あまり、書きたくはないのですが例を示しますので、良く違いを見て順番に変更していってください。
> 一気にやると、直ってしまうだけで何が悪かったのかがわからなくなるので・・・。これは、
> 問題解決の基本的な方法です。
例を記述して頂きありがとうございます。
自分の自分のconf(httpd、ssl共に)比べてみたのですが、特に違っている部分は見当たりませんでした。
最初から記載し直したりもしてみたのですが、やはり「-D SSL」を受け付けてくれません。
しいてあげるならhttpd.confは各バーチャルホストにCGIなどを<Directory>にて指定している位でした。

> で、どこを直したら上記のエラーがなくなるかを教えてください。おやじも上記エラーが何をすると
> 出るのかがわからないので、勉強のためなのでコンフィグ例を示したので、よろしくお願いします。
現在の所、ssl側はトップドメイン(aaa.jp)のみを設定して色々と試しているのですが、やはりエラーが消えないのが現状です。
*:443のエラーなのでおやじ様が仰る通りssl.confの何かがいけないのだと思うのですが、なかなか原因が解らずじまいです。
原因がはっきりしましたらご報告させて頂きます。

色々と設定を最初から行なっている時に気づいたのですが、おやじ様のSSL設定で「SSLMutex file:logs/ssl_mutex」をコメントアウトとの事でしたが、自分のSSLには「SSLMutex file:logs/ssl_mutex」がありません。
これに相当する物が何かあるのでしょうか?
「SSLMutex default」はあるのですがこれがそうなのでしょうか。


No.6358 投稿時間:2006年09月18日(Mon) 00:00 投稿者名:mizuho URL:
タイトル:Re:

> > > > 「netstat -an -p tcp」で443がlisten状態になっていて、HTTPSが起動できているか
> > 確認してください。パラメータミス(小文字)なので無視されてHTTPSは起動せず、Apacheは
> > HTTP(80)だけ起動しているので、443はないはずです。「Apacheがエラーなく起動する」=
> > 「HTTPSも起動する」ではないので、何を確認すれば正常なのかを押さえることですね。
>
> コマンドを打ち込んでみました。
> おやじ様の仰る通り、443はありませんでした。
> Apache=HTTPSじゃないのですね。
> 一つ勉強になりました。ありがとうございます。
>
> > 「IPベース」? おやじは、名前ベースでやられているのかIPベースなのかがわからず混乱してます。
> 混乱させてしまい、申し訳ありません。
> NAMEベースで行なっていたのですが、IPベースじゃないと出来ないと記載されているのを見た際に、試しにIPベースにしてみたんです。
> その際も見れなかったのですが、初のIPベースだったのと、IPできてもNAMEで出来ないと意味が無いと思い早々にNAMEベースに専念する事にしました。
>
> > SSL関係のバーチャルホストの設定がおかしいのでは?
> > あまり、書きたくはないのですが例を示しますので、良く違いを見て順番に変更していってください。
> > 一気にやると、直ってしまうだけで何が悪かったのかがわからなくなるので・・・。これは、
> > 問題解決の基本的な方法です。
> 例を記述して頂きありがとうございます。
> 自分の自分のconf(httpd、ssl共に)比べてみたのですが、特に違っている部分は見当たりませんでした。
> 最初から記載し直したりもしてみたのですが、やはり「-D SSL」を受け付けてくれません。
> しいてあげるならhttpd.confは各バーチャルホストにCGIなどを<Directory>にて指定している位でした。
>
> > で、どこを直したら上記のエラーがなくなるかを教えてください。おやじも上記エラーが何をすると
> > 出るのかがわからないので、勉強のためなのでコンフィグ例を示したので、よろしくお願いします。
> 現在の所、ssl側はトップドメイン(aaa.jp)のみを設定して色々と試しているのですが、やはりエラーが消えないのが現状です。
> *:443のエラーなのでおやじ様が仰る通りssl.confの何かがいけないのだと思うのですが、なかなか原因が解らずじまいです。
> 原因がはっきりしましたらご報告させて頂きます。
>
> 色々と設定を最初から行なっている時に気づいたのですが、おやじ様のSSL設定で「SSLMutex file:logs/ssl_mutex」をコメントアウトとの事でしたが、自分のSSLには「SSLMutex file:logs/ssl_mutex」がありません。
> これに相当する物が何かあるのでしょうか?
> 「SSLMutex default」はあるのですがこれがそうなのでしょうか。


No.6359 投稿時間:2006年09月18日(Mon) 00:26 投稿者名:mizuho URL:
タイトル:Re:設定できました

No.6358ですが、記事を書く前に謝ってEnterを押してしまいました。
申し訳ありません。

SSLについてですが、ようやく「Name VirtualHost*443 has no VirtualHosts」エラーがでずに設定できましたのでご報告したいと思います。

先ず、記述になってしまいますが、おやじ様に教えて頂いたhttpd.conf、ssl.confと自分の各confを見比べた所、特に違いはありませんでした。
通常のhttpでは「Name VirtualHost*443 has no VirtualHosts」がでない事と*443の部分からhttpd.confは間違ってないと判断し、ssl.confを重点におやじ様のと、ネットで調べた所、下記のように変更しましたら「-D SSL」を受け付けてくれて、サイトでのアクセスも確認できました。

変更した箇所は<VirtualHost _default_:443>をコメントアウトして上部に、VirtualHost*:443を追加。
コメントアウトした#<VirtualHost _default_:443>の下に<VirtualHost *:443>を追加して。

VirtualHost*:443
#<VirtualHost _default_:443>
<VirtualHost *:443>
という形にしたのと、
SSLCertificateFile conf/ssl.crt/server.crt
SSLCertificateKeyFile conf/ssl.key/server.key
の証明書と鍵の場所を、
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
というように" "で閉じるという二箇所です。

これを行なった所「Name VirtualHost*443 has no VirtualHosts」は出力されず、「-D SSL」を受け付けてくれて、無事にSSL化できました。
どちらか一箇所のみの変更ですと、エラーは消えませんでしたので、両方の変更が必要のようです。

自分の失敗や成功がおやじ様の今後の参考になれば幸いです。
色々とありがとうございました。
これからも勉強させて頂きますので宜しくお願いします。


No.6360 投稿時間:2006年09月18日(Mon) 08:25 投稿者名:おやじ URL:
タイトル:これで解決したのですか?

とりあえずは、よかったですね。
でも、下記で起動できるようになる理由がわからないため、おやじとしては完全に不完全燃焼です。つまり、動いたものの本当の理由がわからないので、とりあえず解決したとはいえ今後の役にたつ情報が得られていないからです。言い換えると、問題が解決した理由がわからないので、少しでも何かを触るとまたおかしくなる可能性が大であるということです。
mizuhoさんは、現象ではなく動作するようになった理由を説明できますか?
差し支えなければ、httpd.confとssl.confをおやじにメールしてくれませんか? おやじの目で見てみて、検証してみたいので・・・。
気になることをインラインで記述します。

> SSLについてですが、ようやく「Name VirtualHost*443 has no VirtualHosts」エラーがでずに設定できましたのでご報告したいと思います。

まずは、「Name VirtualHost*443 has no VirtualHosts」とエラーを書かれてますが、「NameVirtualHost *:443 has no VirtualHosts」の間違いですよね。

> 先ず、記述になってしまいますが、おやじ様に教えて頂いたhttpd.conf、ssl.confと自分の各confを見比べた所、特に違いはありませんでした。
> 通常のhttpでは「Name VirtualHost*443 has no VirtualHosts」がでない事と*443の部分からhttpd.confは間違ってないと判断し、ssl.confを重点におやじ様のと、ネットで調べた所、下記のように変更しましたら「-D SSL」を受け付けてくれて、サイトでのアクセスも確認できました。
>
> 変更した箇所は<VirtualHost _default_:443>をコメントアウトして上部に、VirtualHost*:443を追加。
> コメントアウトした#<VirtualHost _default_:443>の下に<VirtualHost *:443>を追加して。
>
> VirtualHost*:443
> #<VirtualHost _default_:443>
> <VirtualHost *:443>

一番上の行は何を意味していますか? まさか書いてないですよね? 書いてあればエラーのはず。
ここの変更は、NameVirtualHost 192.168.1.100:443 というふうにIPアドレスで書いていなければどちらでも問題ないので、上記の記述とエラー内容が気になるのです。
因みに、おやじのところでは当然どちらでも動きます。

> という形にしたのと、
> SSLCertificateFile conf/ssl.crt/server.crt
> SSLCertificateKeyFile conf/ssl.key/server.key
> の証明書と鍵の場所を、
> SSLCertificateFile "conf/ssl.crt/server.crt"
> SSLCertificateKeyFile "conf/ssl.key/server.key"
> というように" "で閉じるという二箇所です。

こちらは全くわからない話です。パラメータを" "でくくらなければならないのは、Apacheに限った話ではなく一般論として、Apacheを「C:\Program Files」配下にインストールしたような場合で、パスにスペースが入ってしまうとパラメータの終わりと勘違いしてしまうので、例えば、"C:\Program Files\apache\conf/ssl.crt/server.crt" としてこれが一つのパラメータと認識させたい場合です。
従って、上記のように連続しているパラメータを" "でくくらなければならないとなると、本当に連続しているのか? プログラムが壊れている? としか思えないのですが・・・。

> これを行なった所「Name VirtualHost*443 has no VirtualHosts」は出力されず、「-D SSL」を受け付けてくれて、無事にSSL化できました。
> どちらか一箇所のみの変更ですと、エラーは消えませんでしたので、両方の変更が必要のようです。
>
> 自分の失敗や成功がおやじ様の今後の参考になれば幸いです。

上記のとおりで、おやじの知識では有り得ないことで解決したと言われているので、なんとも言いがたいのが本音です。
だからといって、「VirtualHost*:443」の疑問以外は間違っているわけではありません。単に盲腸(やってもやらなくても動くはず)とおやじは思っているだけです。従って、他の要因があるはずなので、このままでは後で何かすると突然動かなくなる気がしているので、このままでいいのかな? と大いに気を揉んでいるわけです。
最後ですが、名前ベースの場合、ブラウザのアドレス欄に打ち込んだホスト名との一致で振り分けするので、家庭内での名前解決(DNS)がうまくできていないと試験できないので注意が必要です。

[おやじのApache+SSLのHPからの抜粋。]
 各サイトのサーバ名(アクセスしてくるホスト名)を指定します。名前ベースのバーチャルホストを使用する場合、ブラウザへ入力されたアドレスとサーバ側に設定された名前を比較するため、家庭内でのアクセスに支障がないようにするには、内向きDNSを建てるか、hostsファイルで設定しておかないと思うようにアクセスできなくなる。


No.6361 投稿時間:2006年09月18日(Mon) 10:53 投稿者名:mizuho URL:
タイトル:Re: なぜかこれで動きました

おやじ様、ご返信ありがとうございます。
> とりあえずは、よかったですね。
一応、ほっとしたのですが、おやじ様の返信を拝見するとかなり特殊なのですね。

> でも、下記で起動できるようになる理由がわからないため、おやじとしては完全に不完全燃焼です。つまり、動いたものの本当の理由がわからないので、とりあえず解決したとはいえ今後の役にたつ情報が得られていないからです。言い換えると、問題が解決した理由がわからないので、少しでも何かを触るとまたおかしくなる可能性が大であるということです。
おやじ様のご満足に行く結果でなく申し訳ありません。

> mizuhoさんは、現象ではなく動作するようになった理由を説明できますか?
なぜこれで動作するようになったかは説明できません。
ただ、ネットで色々と調べた時に、某サイト様で上記の設定を行なっていらっしゃる方がおりました。
そこのサイト様を参考に設定を行なった所、エラーが出ずに動きました。
> 差し支えなければ、httpd.confとssl.confをおやじにメールしてくれませんか? おやじの目で見てみて、検証してみたいので・・・。
解りました。メールさせて頂きます。

> まずは、「Name VirtualHost*443 has no VirtualHosts」とエラーを書かれてますが、「NameVirtualHost *:443 has no VirtualHosts」の間違いですよね。
記述ミスで申し訳ありません。:が抜けておりますが「NameVirtualHost *:443 has no VirtualHosts」です。
> > VirtualHost*:443
> > #<VirtualHost _default_:443>
> > <VirtualHost *:443>
>
> 一番上の行は何を意味していますか? まさか書いてないですよね? 書いてあればエラーのはず。

記述してあります。この設定になっております。
一番上の行は消しても動きましたが、記述してあっても動きました。

> > SSLCertificateFile "conf/ssl.crt/server.crt"
> > SSLCertificateKeyFile "conf/ssl.key/server.key"
> > というように" "で閉じるという二箇所です。
> こちらは全くわからない話です。パラメータを" "でくくらなければならないのは、Apacheに限った話ではなく一般論として、Apacheを「C:\Program Files」配下にインストールしたような場合で、パスにスペースが入ってしまうとパラメータの終わりと勘違いしてしまうので、例えば、"C:\Program Files\apache\conf/ssl.crt/server.crt" としてこれが一つのパラメータと認識させたい場合です。
> 従って、上記のように連続しているパラメータを" "でくくらなければならないとなると、本当に連続しているのか? プログラムが壊れている? としか思えないのですが・・・。

これに関しましては、デフォルトのssl.confでSSLCertificateFile "conf/ssl.crt/server.crt"とSSLCertificateKeyFile "conf/ssl.key/server.key"の間にコメントアウト行が数行入っているのですが、それをそのままにして設定してあります。そのコメント行を覗けば連続になります(ちょっと解り辛い書き方ですが)
ただ、おやじ様にお教え頂いたように" "を付けないとエラーが発生しました。
うちのApacheはC:\Apache group\Apacheという形でインストールされています。

> > これを行なった所「Name VirtualHost*443 has no VirtualHosts」は出力されず、「-D SSL」を受け付けてくれて、無事にSSL化できました。
> だからといって、「VirtualHost*:443」の疑問以外は間違っているわけではありません。単に盲腸(やってもやらなくても動くはず)とおやじは思っているだけです。従って、他の要因があるはずなので、このままでは後で何かすると突然動かなくなる気がしているので、このままでいいのかな? と大いに気を揉んでいるわけです。

今回の記述はssl.confを完全にデフォルトに戻して行ないました。
他の要因は自分にはちょっと解りかねますので、勉強して行きたいと思います。

> 最後ですが、名前ベースの場合、ブラウザのアドレス欄に打ち込んだホスト名との一致で振り分けするので、家庭内での名前解決(DNS)がうまくできていないと試験できないので注意が必要です。
ありがとうございます。DNSはDDNSで行なっております。
通常のhttpdでのバーチャルホスト設定は何度か行なっておりますが、今の所毎回きちんと動作しております。
sslは二個あるドメインのうち、一箇所のみの予定で、もう一箇所の設定は行なっておりません(httpでは見れます)
こちらを行なう時におやじ様の仰るように、動作しないという事が起こるかもしれないですね。
色々と勉強しつつ試して行きたいと思います。


No.6362 投稿時間:2006年09月18日(Mon) 12:09 投稿者名:おやじ URL:
タイトル:情報を隠蔽されたら終わりです。

> > 差し支えなければ、httpd.confとssl.confをおやじにメールしてくれませんか? おやじの目で見てみて、検証してみたいので・・・。
> 解りました。メールさせて頂きます。

せっかく送っていただきましたが、見るまでもなく原因はわかりました。
実際の設定どおりに記載してくれていないのでおやじにはわからなかっただけで、今回のカキコで本当の設定が書いてあり、当然の結果と思います。
良くIPアドレスを隠したりする方がいますが、状況によってはそれ自体が問題解決のヒントなので隠されると解決できないことがあります。自分で何が問題か解決できないなら隠蔽すべきではありません。アドレスの隠蔽なら隠蔽したことがわかるので良いのですが、今回のように、全く違う設定をあたかもそのように設定しているかのごとく書かれたら、何で動かないのか???と悩みっぱなしでした。
初めから正確に書いてくれていれば一発でわかる話で、これをみてガックリでした。

> > まずは、「Name VirtualHost*443 has no VirtualHosts」とエラーを書かれてますが、「NameVirtualHost *:443 has no VirtualHosts」の間違いですよね。
> 記述ミスで申し訳ありません。:が抜けておりますが「NameVirtualHost *:443 has no VirtualHosts」です。
> > > VirtualHost*:443
> > > #<VirtualHost _default_:443>
> > > <VirtualHost *:443>
> >
> > 一番上の行は何を意味していますか? まさか書いてないですよね? 書いてあればエラーのはず。
>
> 記述してあります。この設定になっております。
> 一番上の行は消しても動きましたが、記述してあっても動きました。

送られてきたものには書いてありませんが、こんなディレクティブはないのでエラーになり起動できないはずですが? どこかで、こんな設定をみたのでしょうか? これがある状態で起動できたというのは、今も疑問です。もしかして、これも正確には、書いてある場所を含めて違う話なのでしょうか? (VirtualHost*:443 と全てつながっているので、本当にこういう設定だったのかかなり違和感があります。)

> > > SSLCertificateFile "conf/ssl.crt/server.crt"
> > > SSLCertificateKeyFile "conf/ssl.key/server.key"
> > > というように" "で閉じるという二箇所です。
> > こちらは全くわからない話です。パラメータを" "でくくらなければならないのは、Apacheに限った話ではなく一般論として、Apacheを「C:\Program Files」配下にインストールしたような場合で、パスにスペースが入ってしまうとパラメータの終わりと勘違いしてしまうので、例えば、"C:\Program Files\apache\conf/ssl.crt/server.crt" としてこれが一つのパラメータと認識させたい場合です。
> > 従って、上記のように連続しているパラメータを" "でくくらなければならないとなると、本当に連続しているのか? プログラムが壊れている? としか思えないのですが・・・。
>
> これに関しましては、デフォルトのssl.confでSSLCertificateFile "conf/ssl.crt/server.crt"とSSLCertificateKeyFile "conf/ssl.key/server.key"の間にコメントアウト行が数行入っているのですが、それをそのままにして設定してあります。そのコメント行を覗けば連続になります(ちょっと解り辛い書き方ですが)
> ただ、おやじ様にお教え頂いたように" "を付けないとエラーが発生しました。
> うちのApacheはC:\Apache group\Apacheという形でインストールされています。

これが唯一無二の動かない理由であり、これが最初から書いてあれば一発で終わりです。なお、<VirtualHost _default_:443> か <VirtualHost *:443>は問題にはならないはずです。
ただ、このレスをみるとおやじが書いたことの意味が伝わっていないようですね。これでは、せっかくおやじが時間を割いた意味がないので書いてあることの繰り返しですが、もういちど説明しておきます。
おやじは、行間にまたがった話は一切していないですよね。SSLCertificateFileというディレクティブでは、パラメータとしてサーバ証明書へのパスを指定します。従って、おやじの例のようにパスにスペースが入っていない場合は" "でくくる必要はありませんが、mizuhoさんの環境だと、" "でくくらないと

SSLCertificateFile C:\Apache group\Apache\conf\ssl.crt\server.crt

となります。しかし、これではC:\Apacheの後に空白があるため、Apacheはここがパスの最後と思い証明書は「C:\Apache」と勘違いしてしまいますが、実際はそこはフォルダであり証明書がないためエラーとなっただけです。これを回避するための方法が、" "でくくり、この中全体が一つのパラメータだよと宣言する方法です。Windowsがこういう空白いりフォルダ名(典型例がProgram Filesでこれで悩まさられる方は多いですが・・。)を使うことが間違いのもとですが、この考え方は、Apache以外でも同じですから、忘れないように・・・。これが、mizuhoさんが得た今回の成果です。


No.6363 投稿時間:2006年09月18日(Mon) 19:31 投稿者名:mizuho URL:
タイトル:Re: 情報を隠蔽されたら終わりです。

> せっかく送っていただきましたが、見るまでもなく原因はわかりました。
> 実際の設定どおりに記載してくれていないのでおやじにはわからなかっただけで、今回のカキコで本当の設定が書いてあり、当然の結果と思います。

申し訳ありません。
SSL無しのApacheを入れた時のデフォルトがApache groupでしたので
これは一般的なものなのだと思っておりました。
情報を隠蔽しているつもりは毛頭ありませんでした。

> > 記述してあります。この設定になっております。
> > 一番上の行は消しても動きましたが、記述してあっても動きました。
> 送られてきたものには書いてありませんが、こんなディレクティブはないのでエラーになり起動できないはずですが? どこかで、こんな設定をみたのでしょうか? これがある状態で起動できたというのは、今も疑問です。
おやじ様のカキコを見て消した状態と書き込みがしてある状態と、確認しました。
その際にメールをお送りするためにsslを添付したのですが、消した状態のsslでお送りしてしまったようです。
重ね重ねご迷惑をおかけしました。
ただ、VirtualHost*:443の記述に関しましてはこの設定でも本当に動きました。
どこのサイト様で見たかにつきましては、メール内に記載したサイト様です。

> これが唯一無二の動かない理由であり、これが最初から書いてあれば一発で終わりです。なお、<VirtualHost _default_:443> か <VirtualHost *:443>は問題にはならないはずです。
> ただ、このレスをみるとおやじが書いたことの意味が伝わっていないようですね。これでは、せっかくおやじが時間を割いた意味がないので書いてあることの繰り返しですが、もういちど説明しておきます。
> おやじは、行間にまたがった話は一切していないですよね。SSLCertificateFileというディレクティブでは、パラメータとしてサーバ証明書へのパスを指定します。従って、おやじの例のようにパスにスペースが入っていない場合は" "でくくる必要はありませんが、mizuhoさんの環境だと、" "でくくらないと
>
> SSLCertificateFile C:\Apache group\Apache\conf\ssl.crt\server.crt
>
> となります。しかし、これではC:\Apacheの後に空白があるため、Apacheはここがパスの最後と思い証明書は「C:\Apache」と勘違いしてしまいますが、実際はそこはフォルダであり証明書がないためエラーとなっただけです。これを回避するための方法が、" "でくくり、この中全体が一つのパラメータだよと宣言する方法です。Windowsがこういう空白いりフォルダ名(典型例がProgram Filesでこれで悩まさられる方は多いですが・・。)を使うことが間違いのもとですが、この考え方は、Apache以外でも同じですから、忘れないように・・・。これが、mizuhoさんが得た今回の成果です。

解りました。
二度もご説明させて申し訳ありません。
他のソフトにつきましても気をつけたいと思います。


No.6364 投稿時間:2006年09月18日(Mon) 20:04 投稿者名:おやじ URL:
タイトル:いくら見てもありませんね。

> > > 記述してあります。この設定になっております。
> > > 一番上の行は消しても動きましたが、記述してあっても動きました。
> > 送られてきたものには書いてありませんが、こんなディレクティブはないのでエラーになり起動できないはずですが? どこかで、こんな設定をみたのでしょうか? これがある状態で起動できたというのは、今も疑問です。
> おやじ様のカキコを見て消した状態と書き込みがしてある状態と、確認しました。
> その際にメールをお送りするためにsslを添付したのですが、消した状態のsslでお送りしてしまったようです。
> 重ね重ねご迷惑をおかけしました。
> ただ、VirtualHost*:443の記述に関しましてはこの設定でも本当に動きました。
> どこのサイト様で見たかにつきましては、メール内に記載したサイト様です。

メールに書いていただいたサイトさん(おやじのHPをみて構築されているようですが・・)を、いくら見ても書いてないのですが? 検索でも引っかかりません。
というより、「VirtualHost*:443」のように「VirtualHost」と「*:443」の間に空白なしでは意味がわからないのでこの記述は有り得ないですよね。
唯一、近い記述は、普通に名前ベースで443を有効にする「NameVirtualHost *:443」ですね。これと、勘違いされていませんか?



掲示板▲頁先頭