無料 SSL 証明書 StartSSL を使う

2009-2-4 07:00
このエントリーをはてなブックマークに追加

無料で利用できる StartSSL の証明書を使って、Apache + mod_ssl で HTTPS 通信ができるように設定をする方法です。StartSSL は、個人であれば、1年間の期限付きで SSL 証明書を無料で取得できます。ただし、ドメインの所有者である必要があります。

無料とはいえ、Firefox や Safari であれば、認証局として登録されているので、これらのブラウザで警告は出ません。残念ながら IE は対応していないようです。私の場合は Firefox で試しました。なお、私が試した内容を参考程度に書いているだけですので、この記事をもとに何か損害が発生しても、責任が取れません。くれぐれも自己責任でお願いします。

StartSSL に登録

まず StartSSL に登録します。StartSSL Free を選択し、「Register」を選択します。

startssl の登録1

住所、氏名、メールアドレスなどを入力します。「Zip, Locality/Place」には郵便番号と市町村名(もちろんローマ字で)を入力します。「State/Region」は都道府県名を選択します。「Phone」 は海外か日本国内へかける要領で、03-1234-5678 であれば +81-3-1234-5678 のようになります。Continue を押します。

StartSSL の登録2

すぐに登録したメールアドレスに認証用のコードが送られてきますので、これを貼り付けて「continue」を押します。ちなみに最初メールが届いてから15分くらい経って入力したら、すでにキーが破棄されていて最初からやり直しになりましたので、すぐに作業しましょう。

StartSSL の登録3

なぜか日本語化されている「高強度の暗号化」を選んで、「Continue」を押します。

StartSSLの登録4

ブラウザに証明書がインストールされました。今後は StartSSL へのログインは、この証明書を使って行なわれます。そのため、パスワードはありません。

StartSSL へログインする際には、クライアント証明書を利用する。

クライアント証明書のバックアップ

StartSSL には、クライアント証明書がインストールされたブラウザでなければアクセスできなくなりますので、万が一に備えて証明書をバックアップしましょう。次の例は Firefox 3 の場合です。

クライアント証明書のバックアップ1

「ツール」-「オプション」でオプション画面を出して、「詳細」タブを選択します。「証明書を表示」ボタンを押します。

クライアント証明書のバックアップ

StartCom Free ……という証明書を選択し、「バックアップ」ボタンを押します。

クライアント証明書のバックアップ

バックアップ用パスワードを訊かれますので入力します。このパスワードは後で証明書をインポートする際に必要となるものです。

ドメインを認証する

Web サーバの証明書作成の前に、ドメインの所有者であることを確認するためのプロセスがあります。

StartSSL の設定5

タブの Validations Wizard をクリックします。

StartSSL の設定6

Type として Domain Name Validation を選択します。

StartSSL の設定7

自分の所有するドメイン名を指定します。この時点では、www をつける必要はありません。

StartSSL の設定8

ドメインの正当な所有者であることを確認するためのキーが送られてくるメールアドレスを選択します。こちらで任意のアドレスを指定することはできません。「continue」を押すと、メールにキーが送られてきます。このキーを入力すると、ドメインの所有者であることが確認され、Web サーバ用の証明書などが作成できるようになります。

Webサーバ用の証明書を作成する

いよいよ Webサーバ用の証明書を作成します。

StartSSL の設定9

「Certificates Wizard」のタブを押して、SSL/TLS Web Serber Certificate を選択します。

StartSSL の設定10

自分で作成した秘密鍵ファイルが無い場合は、ここで作成することもできます。10文字以上32文字以下のパスフレーズを入力して continue を押します。パスフレーズにはアルファベットと数字のみが使えます。(自分で作成した秘密鍵ファイルがある場合は、Skip を押して先に進みます。)

StartSSL の設定画面で秘密鍵を作成したところ

このファイルをサーバに保存します。説明文では ssl.key という名前で保存と書かれていますが、ここでは /etc/httpd.conf/ssl.key/server.key に保存します。

StartSSL の設定11 サブドメインを指定する

サーバのサブドメインを指定します。ここではサブドメインとして www を指定しています。サブドメインを使わないについても証明書には含まれますので、とりあえず www を指定しておきましょう。なお、無料では複数のサブドメインや、ワイルドカード (*.example.org) の指定はできません。

StartSSL の設定12

CSR ファイルが作成されました。CSR ファイルは署名の要求をするためのもので、StartSSL がこの内容に署名をして証明書として発行してくれるものです。通常は同じサーバ・ドメインでも証明書の発行ごとに毎回異なる秘密鍵を生成して CSR ファイルを生成するものなので、特に保存の必要はないと思います。必要であればダウンロードして保存します。次に「continue」をクリックします。

StartSSL の設定13

PEM エンコードされた CRT ファイルができます。これが Web サーバの証明書ファイルです。これを /etc/httpd/conf/ssl.crt/server.crt として保存します。保存したら「continue」をクリックします。これで証明書の作成は終了です。

Apache + mod_ssl で設定

次に Apache + mod_ssl の環境で、これらの証明書を使うように設定します。通常、httpd.conf は変更する必要はありません。CentOS で PRM から入れていれば、/etc/httpd/conf.d/ssl.conf というファイルがありますので、これを編集します。

<VirtualHost _default_:443>
DocumentRoot "/var/www/html
ServerName example.org:443
ServerAlias www.example.org:443

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
……
</VirtualHost>

SSL は NameNameVirtualHost を利用している場合でも利用できます。保存したら httpd を再起動します。

# service httpd configtest
Syntax OK
# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中: Apache/2.0.52 mod_ssl/2.0.52 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.
Server example.org:443 (RSA)
Enter pass phrase: //←パスフレーズを入力
OK: Pass Phrase Dialog successful. [  OK  ]

再起動時に、秘密鍵作成時に入力したパスフレーズを入力すれば Apache が起動します。この作業を毎回しないと Apache が起動しなくなり不便です。秘密鍵のパスフレーズを解除しておくには、openssl コマンドを使って次のようにします。

# openssl rsa -in server.key -out server.key

なお、秘密鍵ファイルは root と apache 以外の第三者が閲覧できないようなパーミッションに設定しておきましょう。

Web ブラウザでアクセスしてみる

Firefox でサーバに https://~ でアクセスしてみます。設定に問題がなければ、何も警告が出ずに SSL 通信ができるはずです。

ブラウザでアクセスできない場合、Port 443 がファイアウォールで遮断されていないか確認してください。

ssl_error_rx_record_too_long のエラーが出て通信できない

ssl_error_rx_record_too_long のエラーが出る場合は、httpd.conf か ssl.conf でバーチャルホストの設定が正しくされていない可能性がありますので、設定を確認してください。

  • ブックマーク : アクセス: 76,751回
  • カテゴリー : Apache
  • キーワード : , ,

コメントはまだありません

コメントはまだありません。

現在、コメントフォームは閉鎖中です。

23 queries. HTML convert time: 0.421 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2013 @ futuremix.org ログイン