OverView
- さくらVPSでメールやグループウェアを使いたい
通信が平文なのはどうだろうか?
→SSL暗号化通信をできるようにする。 - 無料のサーバ証明書を取得(オレオレ証明書を使わない)
- SSLのインストールと設定
SSL暗号化通信を入れるにあたり
目的はとにかく通信の暗号化のみ。SSLが導入できればOK。
ただし、SSL暗号化通信をするにはサーバ証明書が必要。
サーバ証明書はCA(認証局)と呼ばれる機関・組織が発行するものと、
自分が認証局となって発行するもの(俗っぽい言い方でオレオレ証明書)がある。
前者は有名どころでverisign。有料。年間50,000~くらいの費用がかかる。
後者は誰でも発行できる。がWEB公開した際に多くのブラウザで警告表示される。
また、場合によっては表示できないものもある。
クライアントに証明書をインストール&許可するという手順を踏めば
オレオレ証明書の警告表示はなくなるが公開WEB上は非現実的。
今回は機能は限定的だが無料でサーバ証明書を発行してくれる認証局の
startsslを利用する。startsslにて証明書を発行してもらい、それをさくらVPS上に
セットする。
前提条件
- さくらVPSに独自ドメインを設定済
- さくらVPSにメールサーバ構築済
(startssl登録時にさくらVPS宛のメールによるやりとりが発生する)
startsslよりサーバ証明書を取得
startsslでは1証明書で2つのホスト名を証明することが可能。
今回はWEB(tryerror.net)とメール(mail.tryerror.net)を登録する。
startsslサイトより登録
ココから登録を行う。
StartSSL Free(Class 1)を選択
以降、手順のみ記述
- 右上のControl Panelをクリック
- Sign-upをクリック
- 氏名・住所などを入力するが、この時全て英語で入力すること
address:このサイトで変換
zip:郵便番号
phone:日本ので03-xxxx-xxxxの場合、+81-3-xxxx-xxxx
Email:受け取れるアドレスならフリーメールでも可能 - 登録するとメールに本人確認用コードが送られてくるので
startsslのサイトに入力して本人確認する - 6時間以内にstartsslからメール返信がある。
メールに再度確認コードが記載されているのでstartsslのサイトに入力する。
するとstartssl登録用のクライアント証明書がインストールされる。
→この証明書がある端末からのみ、startsslの変更操作ができる。 - Validations Wizardをクリック
- Domain Name Validationを選択してクリック
- 自サーバのドメイン名を入力(tryerror.net)
- サーバ確認用のメール受信先を選択する。
今回はhostmaster@tryerror.netを選択 - hostmaster@tryerror.netにメールが来るので中を確認して
startsslサイトに登録
sshなどで確認、hostmaster宛メールは設定によるがrootに転送されているかも。
転送設定は/etc/aliasesを確認のこと。 - startsslのCertificatesWizardをクリック
- 秘密鍵を作る。
Web Server SSL/TLS Certificateを選択
Key Password:暗号化を解読する為のパスワードを入力。
Keysize:4096(好みに合わせて)
Secure:SHA2(好みに合わせて) - できあがったkeyファイル(秘密鍵)をローカルにダウンロード(例:startssl.key)。
- もう一つのホスト名も登録しておく。
Add domainでhttp://mail.tryerror.netを指定して実行 - CRTファイル(サーバ証明書)をダウンロードする。
hostmaster@tryerror.netにメールがくるのを待つ
メールがきたらブラウザでStartSSLのページのToolBoxを開く
Retrive Certificateを選択
tryerror.comを選択
できあがった秘密鍵をローカルにダウンロード(例:startssl.crt)
ざっとこんな手順でサーバ証明書を発行してもらうのだが、
自分が実施したときは日本の住所表記に担当が慣れていないのか「入力した住所・電話番号等が正しいか?」的な
英文メールがstartsslから来てIt’s No Problem, Nothing to do Yah! とか適当に返したりした。
入力内容を人手で確認している模様。
取得したサーバ証明書をさくらVPSにアップロードする
startsslよりダウンロードしたkeyファイル(秘密鍵)とcrtファイル(サーバ証明書)を
SSH等でさくらVPSにアップロードする。
アップロード先は/etc/pki/tls/certsとした。
サーバ証明書の所有者をrootに変更
# chown root:root /etc/pki/tls/certs/startssl.crt
中間証明書とルート証明書をダウンロードする
# cd /etc/pki/tls/certs # wget https://www.startssl.com/certs/ca.pem # wget https://www.startssl.com/certs/sub.class1.server.ca.pem # chmod 400 startssl.crt # chmod 400 startssl.key # chmod 400 ca.pem # chmod 400 sub.class1.server.ca.pem
Apache Web Serverにサーバ証明書を適用する
Apache Web Server でSSL通信ができるように設定する。
# yum -y install mod_ssl # vim /etc/httpd/conf.d/ssl.conf 以下を消す <VirtualHost _default_:443> ... </VirtualHost> 以下を追加 NameVirtualHost *:443 SSLCertificateFile /etc/pki/tls/certs/startssl.crt SSLCertificateKeyFile /etc/pki/tls/certs/startssl.key SSLCertificateChainFile /etc/pki/tls/certs/sub.class1.server.ca.pem SSLCACertificateFile /etc/pki/tls/certs/ca.pem
# /etc/init.d/httpd restart
このままだとApache Web Server再起動時に毎回暗号化パスフレーズを聞かれてしまうので対処
# cd /etc/pki/tls/certs # openssl rsa -in startssl.key -out startssl.key
httpでアクセスされたら自動的にhttpsにリダイレクトする
# vi /etc/httpd/conf/httpd.conf LoadModule rewrite_module modules/mod_rewrite.so ←コメントされてない状態
# vim /etc/httpd/conf.d/rewrite.conf <IfModule mod_rewrite.c> RewriteEngine On RewriteLog "logs/rewrite_log" RewriteLogLevel 0 RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule>
proxy設定がされているサイトなど、上記ではhttpsにリダイレクトされないものもある。それらは個別に設定が必要。