携帯サイトでSSLを導入する時の注意点

昨年よりGeoTrust認証ルートが変更になったことで、Apacheに中間CA証明書の設定が必要になりました。

中間CA証明書の設定自体はあちこちのサイトで方法が書かれており、PC向けサイトではそれで問題なく動作すると思います。

ただ携帯向けサイトになると、httpd.confにその通りに書いても、うまく動作しないケースがあります。

このトラブルについては、ググってもなかなか情報が見つからなかったので、同じケースで困っている方のために、設定の際に注意する点を書いておくことにします。

まずは、お馴染みのhttpd.confへの記載方法。

<virtualhost 192.168.0.1:443>
DocumentRoot /var/www/html
ServerName exsample.com:443
ServerAdmin postmaster@exsample.com
ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log
SSLEngine On
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/exsample.com.cer
SSLCertificateFile /etc/httpd/conf/ssl.crt/exsample.com.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/exsample.com.key

<directory “/var/www/html”>
AllowOverride All
Options IncludesNoExec ExecCGI FollowSymLinks
Order Allow,Deny
Allow from All
</directory>
</virtualhost>

もちろん、それぞれの環境に合わせて書き換えてもらう必要はありますが、注意点としては、
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/exsample.com.cer
SSLCertificateFile /etc/httpd/conf/ssl.crt/exsample.com.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/exsample.com.key
の順番を間違えないこと。

ルート証明書を読み込む前に、先に中間CA証明書を読み込む必要があります。

よく解決策として、
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/exsample.com.cer

<virtualhost 192.168.0.1:443>
の上にも書くとか、中間CA証明書の
—–BEGIN CERTIFICATE—–
(省略)
—–END CERTIFICATE—–
を二重に書くとかも見られますが、特にそういったことをしなくても問題ありませんでした。

それとPHPでプログラムを書いている場合は、GETパラメータでPHPSESSID=<?php echo session_id(); ?>のようにして、セッションを引き渡していると思います。

この時、auの端末ではうまくセッションを渡せないケースもありますので、.htaccessなどで、
php_flag session.use_cookies Off
php_flag session.use_only_cookies Off
php_flag session.use_trans_sid On
と記載して、Cookieを利用しないように設定しておきましょう。

あとは、まぁ以前の記事で携帯サイト制作時の注意点を書いたこともあるので、それも参考にしてもらえれば良いかと。

コメントを残す