本来の目的は…
仕事の関係でteamで作業を行う予定があり、グループウェアを入れようか、どうしようかと迷っていた時に、ownCloudが良さそうに感じた。
そこで、apt-getでちょろっと入れてみたら、結構いい感じなのでいくつかテストして、実運用にと思ったけれど、仕事で使うんだし、暗号化しておく必要はあるわなぁと…いうことで、SSLの設定をしようとしてハマったのでメモメモ…。
現在の環境
vpsを借りていて、ディスクには余裕があるし、常時動いているので共有場所には最適なのですよ。
WEB関係としては、apache2+BINDで運用。
ドメイン1:aaa.info(主ドメイン)
ドメイン2:bbb.jp(別ドメイン)
ここまでは、問題なく動作している。
ownCloudをapt-getで入れたら5.0系だったので、本家の6.0系を入れることに。
PC用のクライアントは無料だけど、モバイルのクライアントアプリは100円なのよね〜。実際使ってみると、Dropboxより融通が効いて、とってもいい感じですなぁ。
容量は自分で決められるし…。WebDAVでもアクセスできるし、カレンダーもあったりして…。
設定作業1
apacheのモジュールを調べると、ssl関連がちゃんとあるので、簡単じゃんと思ってやってみる。
# a2enmod ssl
これで、mods-avaiableにあるssl関連が、mods-enable配下にリンクされ、機能するようになる…はずだった。
# service apache2 restart
エラーは出ないが、httpsでaaa.infoに接続してみると、エラーが返ってくる。
アクセスログを見ると
www.abc.info:443 xxx.yyy.zzz.aaa - - [06/Jun/2014:10:22:03 +0900] "\x16\x03\x01" 501 297 "-" "-"
いままでに、見たことのないエラーが出ている…。
httpでのアクセスは問題ないことから、SSL関係の設定ということは分かる。
エラーログを見ると
[Fri Jun 06 10:22:03 2014] [error] [client xxx.yyy.zzz.aaa] Invalid method in request \x16\x03\x01
まあ、確かに対応しているけれどなぁ。
結局、半日格闘することになる。
設定作業結果
/etc/apache2/ports.confを以下のように修正
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
NameVirtualHost *:443
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
続いて、/etc/apache2/sites-enabled/virtual.confを以下のようにした
NameVirtualHost aaa.bbb.ccc.ddd:80
<VirtualHost aaa.bbb.ccc.ddd:80>
ServerAdmin webmaster@aaa.info
DocumentRoot /var/www
ServerName www.aaa.info
ServerAlias aaa.info
<Directory /var/www>
Options FollowSymlinks ExecCGI
AllowOverride AuthConfig
Limit Options FileInfo
</Directory>
</VirtualHost>
<VirtualHost aaa.bbb.ccc.ddd:80>
ServerAdmin webmaster@bbb.jp
DocumentRoot /home/sites/bbb.jp
ServerName www.bbb.jp
ServerAlias bbb.jp
<Directory /home/sites/bbb.jp>
Options FollowSymlinks ExecCGI
AllowOverride AuthConfig
Limit FileInfo Options
</Directory>
</VirtualHost>
NameVirtualHost aaa.bbb.ccc.ddd:443
<VirtualHost aaa.bbb.ccc.ddd:443>
ServerAdmin webmaster@aaa.info
DocumentRoot /var/www
ServerName www.aaa.info
ServerAlias aaa.info
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-aaa.info.pem
<Directory /var/www>
Options FollowSymlinks ExecCGI
AllowOverride AuthConfig
Limit Options FileInfo
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@aaa.info
DocumentRoot /var/www
ServerName www.aaa.infoServerAlias aaa.info
SSLEngine onSSLCertificateFile /etc/ssl/certs/ssl-aaa.info.pem
<Directory /var/www>
Options FollowSymlinks ExecCGI AllowOverride AuthConfig
Limit Options FileInfo
</Directory>
</VirtualHost>
a2enmod で有効にしたsslは削除して、全て自分で書いた。
また、ここで利用してるSSL証明書は、自分で別に作りなおしている。
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf ssl-aaa.info.pem
あとは、キチッとapacheの再起動を掛けてやることで、正常に動作するようになった。
問題点
複数ドメインを扱っていて、SSLを設定しても最初に設定したサイトの証明書しか渡すことが出来ない。もちろん、複数のIPを持っていれば可能なんだろうけど、名前で切り分けている場合は諦めるしか無い。
(設定は可能だけど、ブラウザと正しくやりとりが出来ない)
まあ、どっちにしてもオレオレ証明書だし、経路の暗号化としてしか使用しないので、これでOKっす。
ちなみに、ownCloudをSSLによる接続のみに設定できるので、少しだけ安心?かな。
そういえば、OpenSSLの脆弱性の情報が流れていました。
http://ccsinjection.lepidum.co.jp/ja.html
updateしておかなきゃね。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。