- - PR -
一台ののサーバーでバーチャルSSLの方法を教えてください。
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-04-30 10:52
こんにちは。
一台のWebServer(apache2.0.49)でSSL(OpenSSL)を二つ立てることで困ってます。 仮想サイトごとにIPアドレス1個ずつ必要なのはわかりますが、 apacheをSSL起動したとき、1サイトしかSSLしか有効になりません。 詳細= 1台のServerでバーチャルでaaa.com、bbb.comの両ドメインをSSLとして 使用したい。 元のServerのIP(eth0)が172.16.0.1/24 ifconfig eth0:1 172.16.0.2 netmask 255.255.255.0 でもう一つIPを振り分けました。 apacheの設定は ・ <IfModule mod_ssl.c> Include conf/ssl.conf </IfModule> ・ ・ ・ <VirtualHost 172.16.0.1> ServerAdmin webmaster@aaa.com DocumentRoot /home/aaa/www ServerName www.aaa.com </VirtualHost> <VirtualHost 172.16.0.2> ServerAdmin webmaster@bbb.com DocumentRoot /home/bbb/www ServerName www.bbb.com </VirtualHost> IPベースのバーチャルホストの設定をしました。 ssl.confは SSLRandomSeed startup builtin SSLRandomSeed connect builtin <IfDefine SSL> Listen 172.16.0.1:443 Listen 172.16.0.2:443 AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLPassPhraseDialog builtin SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache SSLSessionCacheTimeout 300 SSLMutex file:/usr/local/apache2/logs/ssl_mutex <VirtualHost 172.16.0.1:443> DocumentRoot "/home/aaa/www" ServerName www.aaa.com:443 ServerAdmin webmaster@waaa.com SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/ssl/certs/certa.pem SSLCertificateKeyFile /usr/local/ssl/private/keya.pem <Files ~ "\\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache2/cgi-bin"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" \\ nokeepalive ssl-unclean-shutdown \\ downgrade-1.0 force-response-1.0 CustomLog /usr/local/apache2/logs/ssl_request_log \\ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \\"%r\\" %b" </VirtualHost> <VirtualHost 172.16.0.2:443> # General setup for the virtual host DocumentRoot "/home/bbb/www" ServerName www.bbb.com:443 ServerAdmin webmaster@bbb.com SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/ssl/certs/certb.pem SSLCertificateKeyFile /usr/local/ssl/private/keyb.pem <Files ~ "\\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache2/cgi-bin"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" \\ nokeepalive ssl-unclean-shutdown \\ downgrade-1.0 force-response-1.0 CustomLog /usr/local/apache2/logs/ssl_request_log \\ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \\"%r\\" %b" </VirtualHost> </IfDefine> のように設定してapacheを起動しても、 bbb.comの方しかSSLが起動しません。 ssl.confの<VirtualHost>の記述を逆にするとaaa.comしか起動しません。 どこをどう変更すれば、2つSSLが起動するのでしょうか? 長々と書いてしまって申し訳ありません。 よろしくお願いします。 |
|
投稿日時: 2004-04-30 11:20
こんにちはottoto様
SSLの場合だとAPACHEより先にSSL認証が走るので1つのサイトしか運用出来なかったように記憶しています。 2.0.48ではそうだったような・・・・ 識者の方フォロー願います (^ ^; [ メッセージ編集済み 編集者: たて 編集日時 2004-04-30 11:23 ] |
|
投稿日時: 2004-04-30 11:24
たて様、返答ありがとうございます。
SSLの場合だとAPACHEより先にSSL認証が走るのはわかりますが、 IPをわけることで、何とか回避できないものなんでしょうか? やっぱり、無理なんでしょうか。。。。 |
|
投稿日時: 2004-04-30 12:03
すいませんでした。。IPベースだったら出来ますねぇ・・・
以下httpd.conf <VirtualHost 172.16.0.1:80> ←:80を追加 ServerAdmin webmaster@aaa.com DocumentRoot /home/aaa/www ServerName www.aaa.com </VirtualHost> <VirtualHost 172.16.0.2:80> ←:80を追加 ServerAdmin webmaster@bbb.com DocumentRoot /home/bbb/www ServerName www.bbb.com </VirtualHost> httpd.confを上の様にしてもダメでしょうか? |
|
投稿日時: 2004-04-30 12:12
返答ありがとうございます。
httpd.confを <VirtualHost 172.16.0.1:80> に設定しても一つしか、動きませんでした。 httpd.confやssl.confの”Listen”等を変更するのでしょうか?? やってみたんですが。。。 |
|
投稿日時: 2004-04-30 13:24
上手くいきませんか・・・
出来れば以下について教えて頂けますか? 動作確認でそのサイトにアクセスするときは外からですか?内からですか? IPアドレスでのアクセスですか?ドメインでのアクセスですか? 内向きのDNSって動いてますか? hostsファイルは変更してありますか? |
|
投稿日時: 2004-04-30 14:14
何度もありがとうございます。
>動作確認でそのサイトにアクセスするときは外からですか?内からですか? 外からのアクセスになります。 >IPアドレスでのアクセスですか?ドメインでのアクセスですか? ドメインでのアクセスになります。 >内向きのDNSって動いてますか? 内向きDNSは動いていています。 >hostsファイルは変更してありますか? hostsファイル?は変更しておりません。 どこか変更しないといけないのでしょうか? ・追加で質問なのですが、 現状SSLはapacheベリサインお試し版を使用しております。 aaa.comと、bbb.comにつきまして、それぞれCSRを生成し、サーバーIDを 取得しました。 秘密鍵のパスフレーズを二つとも、同じものにしてあります。(仮にabc) そして、お試し版ルート証明書も2つ取得しました。 この状況でapacheをssl起動させると #/usr/local/apache2/bin/apachectl startssl Apache/2.0.49 mod_ssl/2.0.49 (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide us with the pass phrases. Server www.aaa.com:443 (RSA) Enter pass phrase:abc Ok: Pass Phrase Dialog successful. のように、aaa.comのパスしか聞かれないのです。 ですが、お試し版ルート証明書をクライアントにインストールし、 https://www.aaa.com/とhttps://www.bbb.com/にそれぞれアクセス したところ、正常にアクセスでき、証明書の情報を見ても、 https://www.aaa.com/は 発行先 www.aaa.com 発行者 VeriSign 有効期限 2004/04/28から2004/05/13 https://www.bbb.com/ 発行先 www.bbb.com 発行者 VeriSign 有効期限 2004/04/28から2004/05/13 となっています。 この状態って、正常に2ドメインともSSL認証しているのでしょうか? また、 Server www.aaa.com:443 (RSA) Enter pass phrase: Ok: Pass Phrase Dialog successful. のように、aaa.comのパスしか聞かれなくても、正常に 2ドメインともSSL認証しているのでしょうか? 申し訳ありません。 SSLのこと殆どしらないので、くだらない質問かもしれません。 よろしくお願いします。 |
|
投稿日時: 2004-04-30 15:15
外からのアクセスであればhostsファイルは関係無いですね。内向きのDNSがあるようですし。
ssl.confのこの部分↓は Listen 172.16.0.1:443 Listen 172.16.0.2:443 Listen 443で良いと思います。 httpの方はドメインで両方アクセスできてますよね? ドメインごとに証明書は必要です。私の場合は通信の暗号化が目的でしたので、自分がCAになってサーバー証明書を発行しました。ベリサインお試し版でも同じだとは思います。 以下にその時の手順を書いておきます。 【CA用秘密鍵発行】 #openssl genrsa -des3 -out ca.key -rand rand.dat 1024 718 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus e is 65537 (0x10001) Enter PEM pass phrase:xxx ← CA用パスフレーズ Verifying password - Enter PEM pass phrase:xxx ← CA用パスフレーズ 【CA用証明書発行】 # openssl req -new -x509 -days 365 -key ca.key -out ca.crt Using configuration from /usr/share/ssl/openssl.cnf Enter PEM pass phrase:xxxxx ← CA用パスフレーズ You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:JP (国コード) State or Province Name (full name) [Berkshire]:okinawa (都道府県名) Locality Name (eg, city) [Newbury]:Ishigaki (市町村名) Organization Name (eg, company) [My Company Ltd]:Pri_CA (組織名) Organizational Unit Name (eg, section) []:Admin (組織内ユニット名) Common Name (eg, your name or your server's hostname) []:aaa.com (サーバ名) Email Address []:aaa@aaa.com (メールアドレス) 【サーバー用秘密鍵の発行】 # openssl genrsa -des3 -out server.key -rand rand.dat 1024 718 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus e is 65537 (0x10001) Enter PEM pass phrase:yyy ← サーバ用パスフレーズ Verifying password - Enter PEM pass phrase:yyy ← サーバ用パスフレーズ 【サーバー用公開鍵の発行】 # openssl req -new -key server.key -out server.csr Using configuration from /usr/share/ssl/openssl.cnf Enter PEM pass phrase:yyy サーバ用パスフレーズ入力 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:JP (国コード) State or Province Name (full name) [Berkshire]:okinawa (都道府県名) Locality Name (eg, city) [Newbury]:Ishigaki (市町村名) Organization Name (eg, company) [My Company Ltd]:AAA.COM (組織名) Organizational Unit Name (eg, section) []:Admin (組織内ユニット名) Common Name (eg, your name or your server's hostname) []:aaa.com Email Address []:aaa@aaa.com (管理者メールアドレス) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ← 空欄でenter An optional company name []: ← 空欄enter 【サーバー用証明書の発行】 # /usr/local/src/mod_ssl-2.8.11-1.3.27/pkg.contrib/sign.sh server.csr CA signing: server.csr -> server.crt: Using configuration from ca.config Enter PEM pass phrase:xxx ← CA用パスフレーズ Check that the request matches the signature Signature ok The Subjects Distinguished Name is as follows countryName :PRINTABLE:'JP' stateOrProvinceName :PRINTABLE:'Okinawa' localityName :PRINTABLE:'Ishigaki' organizationName :PRINTABLE:'AAA.COM' organizationalUnitName:PRINTABLE:'Admin' commonName :PRINTABLE:'aaa.com' emailAddress :IA5STRING:'aaa@aaa.com' Certificate is to be certified until 13:09:20 2004 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated CA verifying: server.crt <-> CA cert server.crt: OK この手順でaaa.comとbbb.com用に行いました。 ottotoさんと場合だとcerta.pem/keya.pemとcertb.pem/keyb.pemをそれぞれ作成しないといけないのではないでしょうか。 (server.crt=certa.pem erver.key=keya.pemと読み替えて下さい) あと気をつけることは CA用秘密鍵とサーバ用秘密鍵のパスフレーズは同一使用不可 CA証明書とサーバ証明書のOrganization Nameも同一使用不可 だそうです。 [ メッセージ編集済み 編集者: たて 編集日時 2004-04-30 15:29 ] [ メッセージ編集済み 編集者: たて 編集日時 2004-04-30 15:34 ] |