格安SSL証明書導入の記録

SNIについてですがwww.maesan.jpの証明書でmaesan.jpも証明できるのでこの記事でSNI対応できてるというのは間違っていると思われます(コメント指摘ありがとうございます!)
この記事に書いてある無理矢理な方法ではなく、きちんと対応したバージョンのapacheを使ってください><


いままでSSLの証明書取得とか設定とか、レンタルサーバー側に任せっきりだったのでちょっと勉強がてら格安SSLの「エンジョイSSLダイレクト」って所を使ってmaesan.jpドメインをSSL化してみた。
何ていうか名前からしてアレな感じですが、値段は驚きの1,400円w そんな価格の証明書で大丈夫か?w

手順

サーバーのSSL化は以下の手順で行います。
1.CSRの作成
2.SSL証明書発行申し込み
3.サーバーのSSL設定

CSRの作成〜証明書発行申し込み

CSRってのは企業の社会的責任のアレじゃなくて、Certificate Signing Requestの略らしく、簡単にいうと公開鍵+サーバーの情報が含まれた謎の文字列のことです。

サーバーはDebian使ってますが、基本的な手順は一緒と思われます。

まずは秘密鍵の生成を行います。

#openssl genrsa -out maesan.jp.key 2048

秘密鍵とは公開鍵で暗号化されたものを復号化する鍵のことで、秘密鍵で暗号化されたものは公開鍵で復号化できるんだった気がしますが、それはRSAだけだったかよく分からなくなってきたので、詳しい説明は賢い人に聞いてください!

んで次にCSRの生成を行います。

#openssl req -new -key maesan.jp.key -out maesan.jp.csr
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kyoto
Locality Name (eg, city) []:Kyoto
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Maesan&Co.,Ltd.
Organizational Unit Name (eg, section) []:空白でおk
Common Name (eg, YOUR name) []:www.maesan.jp
Email Address []:空白でおk

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:空白でおk
An optional company name []:空白でおk

CSRはテキストで以下のような謎の文字列です
これを申し込みページにコピペすればおk

-----BEGIN CERTIFICATE REQUEST-----
MIICpDCCAYwCAQAwXzELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBUt5b3RvMQ4wDAYD
VQQHEwVLeW90bzEYMBYGA1UEChQPTWFlc2FuJkNvLixMdGQuMRYwFAYDVQQDEw13
d3cubWFlc(◕‿‿◕)IIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnr0R
XAGjybsym3IjKWsCec3/Gea9rptRELwjA5LMRHftSLB47nD1d+WktU34jEyQ/8GQ
MFsSVjaBIAhU4EfnGサンプルだよA3pWBxcEe|\ ___ /|G+FeIZpi71HSa4
FxqQVurIL/qxEkCoy23L0+17Ee5KGSiUNKjKI/人◕‿‿◕人\byGoDHQsIh4bH
hG7BItU0uFVnN3+dzQdyn9tLL1XEIcOvfXY7G5G/EQaiKDLbyUJQo9FWpYjxtdLx
Div0tIhehpK/zzpryTBwu3AkU1n1tp2fOSy6W/hDUvt7IjA90BYlqsIalK8io0hF
t7o+smIpvkdmb+6AewIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAELWERkrZDxB
b1xt5NRPrhFPf0rBX/+tFo( つ◕ω◕)つIKwm4ZuuspvUBfj+OMmYFfe3BE7lU2S
cS/gFT9iSIWmT2hqV5jX9Z5iYqg6kYf7fBUlmmkeZjMw8v3XqSeST8U+6On+hfzp
7DGaYUO∩(⊙∀⊙)∩wJnUn/6AvYuqmLb3n3lhUE+f5t8xZl1FGGo7HwBDinCa8L
Gwfg6gmVYNKQpEJGhIL62+PKaWrMvcU5XHa9yYRMv4t41MyJ4tSXSk+TeO1ViWp8
VynoKbMhyლ(❛o❛ლ)AtNz0fYU/ga2v2hX6g1r7u54KuaIht5CSml2abTeyETCF67
8wpc7VVFwbQ=
-----END CERTIFICATE REQUEST-----

ちなみに申し込みフォームで証明書送付先メールアドレスがroot@www.maesan.jpとかになっちゃって困ったのですが、取りあえずそれで進めて問題なかったです。

で、申し込み終わってPayPalで決済も終わったのに5分どころか一晩連絡無しw
いやいや、最短5分とか書いてあったしw
まぁ営業時間外っぽい時間だったし、色々と流れ的にテンポが悪いとこもあったので、きっと中の人が手作業で進めてるところがあるような気がするw

取りあえず翌朝にメールがきまして、トラッキングページから送付先のメールアドレスも変更して、RapidSSLからメールが届き、承認すれば証明書(中間CAも)がメールにて送付されてきました。

サーバーの設定

SSLの設定ですが、www.maesan.jpとmaesan.jpをVirtualHostで分けたいなと思いましたが、debianのaptのapacheは2.2.9でSNIに対応するのはapache2.2.12以降らしいのでダメっぽい。しかし、ダメ元でやってみるw

まずはmod_gnutlsをインストール

#apt-get install libapache2-mod-gnutls

で、mod_gnutlsの設定
/etc/apache2/ports.conf
mod_sslのとこをコメントアウトして以下を追記

<IfModule mod_gnutls.c>
Listen 443
NameVirtualHost *:443
SSLStrictSNIVHostCheck off
</IfModule>

バーチャルホストの設定
/etc/apache2/sites-available/www.maesan.jp-ssl

<VirtualHost _default_:443>
ServerName www.maesan.jp
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/maesan.jp.crt ←証明書
SSLCertificateKeyFile /etc/apache2/ssl/maesan.jp.key ←秘密鍵
SSLCACertificateFile /etc/apache2/ssl/maesan.jp.cacrt ←中間証明書
以下略
</VirtualHost>

/etc/apache2/sites-available/maesan.jp-ssl

<VirtualHost _default_:443>
ServerName maesan.jp
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/maesan.jp.crt ←証明書
SSLCertificateKeyFile /etc/apache2/ssl/maesan.jp.key ←秘密鍵
SSLCACertificateFile /etc/apache2/ssl/maesan.jp.cacrt ←中間証明書
以下略
</VirtualHost>

モジュールとサイトの有効化

#a2enmod gnutls
#a2dissite default-ssl
#a2ensite www.maesan.jp-ssl
#a2ensite maesan.jp-ssl
#/etc/init.d/apache2 restart

Syntax error on line 19 of /etc/apache2/ports.conf:
Invalid command ‘SSLStrictSNIVHostCheck’, perhaps misspelled or defined by a module not included in the server configuration
failed!

やっぱダメかw
SSLStrictSNIVHostCheckの行をコメントアウトして起動してみると動いた。

試しに https://maesan.jp/https://www.maesan.jp/ にアクセスしてみたらなんだかちゃんとVirtualHostで動いてるw
しかもWindows2000のIE6でも動いた!とりあえずおkとするw

まとめ

超格安のSSLですが、本当に大丈夫なのかと思いまして、古めの環境も含めてチェックしてみました。

おkだったもの
 Mac: Safari5.0.3, Firefox 3.6.14, Chrome 9.0.597.107, Opera 11.01
 Windows XP: IE8, Chrome 9.0.597.98, Firefox
 Windows 2000: Firefox 3.6.14, Opera 10.63
 iPhone

警告でたの
 Windows 2000: IE6

SNI(名前ベースのSSL VirtualHost)は全部いけた。というか本当に上の設定で正しいかどうかは不明なのであまり参考にしない方がイイかもw

VISTAと7が手元に無い+IE7を確認してないのでアレですが、とりあえずは使えるレベルなのではないでしょうか?
ただ、このブログのアクセス解析してもIE6が結構な割合でいるので(こんな技術系ブログでIE6のユーザーが多いのもどうかと思いますがw)、万人向けのネットショップとかだとためらってしまうかもしれないですね。XPのIE6で警告でなかったらおkかも知れませんね。

もし上記アドレスにアクセスして警告とか出る環境があればコメントかtweetしてもらえるとありがたいです!

身も蓋もないことをいうと、1,400円で簡単に証明できてしまうようなものなので自己署名のSSLとどれほどの違いがあるのかと思えてしまいますよねwww

追記:
 Windows XPでIE6の環境を作って試したら問題なくいけました。
 ついでにヨメの古いガラケーで試すとwww.maesan.jpはいけてmaesan.jpはムリだった。
 →正直コレはSNIの問題じゃないかと思ったり思わなかったり。。。

参考URL

エンジョイSSLダイレクト
Ubuntu で Apache 2.2 でマルチドメイン SSL を設定するには

Filed under: Internet,Linux,覚え書き — maesan 5:02 PM  Comments (2)
 iTunes Store(Japan)
 iTunes Store(Japan)
 iTunes Store(Japan)
 iTunes Store(Japan)
 iTunes Store(Japan)