コンテンツへスキップ

さくらVPSでSSL暗号化通信をする

OverView

  1. さくらVPSでメールやグループウェアを使いたい
    通信が平文なのはどうだろうか?
    →SSL暗号化通信をできるようにする。
  2. 無料のサーバ証明書を取得(オレオレ証明書を使わない)
  3. SSLのインストールと設定

 

SSL暗号化通信を入れるにあたり

目的はとにかく通信の暗号化のみ。SSLが導入できればOK。

ただし、SSL暗号化通信をするにはサーバ証明書が必要。

サーバ証明書はCA(認証局)と呼ばれる機関・組織が発行するものと、

自分が認証局となって発行するもの(俗っぽい言い方でオレオレ証明書)がある。

 

前者は有名どころでverisign。有料。年間50,000~くらいの費用がかかる。

後者は誰でも発行できる。がWEB公開した際に多くのブラウザで警告表示される。

また、場合によっては表示できないものもある。

クライアントに証明書をインストール&許可するという手順を踏めば

オレオレ証明書の警告表示はなくなるが公開WEB上は非現実的。

 

今回は機能は限定的だが無料でサーバ証明書を発行してくれる認証局の

startsslを利用する。startsslにて証明書を発行してもらい、それをさくらVPS上に

セットする。

 

前提条件

  1. さくらVPSに独自ドメインを設定済
  2. さくらVPSにメールサーバ構築済
    (startssl登録時にさくらVPS宛のメールによるやりとりが発生する)

 

startsslよりサーバ証明書を取得

startsslでは1証明書で2つのホスト名を証明することが可能。

今回はWEB(tryerror.net)とメール(mail.tryerror.net)を登録する。

 

startsslサイトより登録

ココから登録を行う。

StartSSL Free(Class 1)を選択

無題

以降、手順のみ記述

  1. 右上のControl Panelをクリック
  2. Sign-upをクリック
  3. 氏名・住所などを入力するが、この時全て英語で入力すること
    address:このサイトで変換
    zip:郵便番号
    phone:日本ので03-xxxx-xxxxの場合、+81-3-xxxx-xxxx
    Email:受け取れるアドレスならフリーメールでも可能
  4. 登録するとメールに本人確認用コードが送られてくるので
    startsslのサイトに入力して本人確認する
  5. 6時間以内にstartsslからメール返信がある。
    メールに再度確認コードが記載されているのでstartsslのサイトに入力する。
    するとstartssl登録用のクライアント証明書がインストールされる。
    →この証明書がある端末からのみ、startsslの変更操作ができる。
  6. Validations Wizardをクリック
  7.  Domain Name Validationを選択してクリック
  8. 自サーバのドメイン名を入力(tryerror.net)
  9. サーバ確認用のメール受信先を選択する。
    今回はhostmaster@tryerror.netを選択
  10. hostmaster@tryerror.netにメールが来るので中を確認して
    startsslサイトに登録
    sshなどで確認、hostmaster宛メールは設定によるがrootに転送されているかも。
    転送設定は/etc/aliasesを確認のこと。
  11. startsslのCertificatesWizardをクリック
  12. 秘密鍵を作る。
    Web Server SSL/TLS Certificateを選択
    Key Password:暗号化を解読する為のパスワードを入力。
    Keysize:4096(好みに合わせて)
    Secure:SHA2(好みに合わせて)
  13. できあがったkeyファイル(秘密鍵)をローカルにダウンロード(例:startssl.key)。
  14. もう一つのホスト名も登録しておく。
    Add domainでhttp://mail.tryerror.netを指定して実行
  15. 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にリダイレクトされないものもある。それらは個別に設定が必要。

 

 

 

 

 

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。