VPSでSSL接続をしよう

サーバーとクライアントの間の通信を暗号化する「SSL」は、今では必須といえる状況になっています。今回は、ApacheでSSL化を行う手順を解説します。

 

 

■SSLの必要性

■必要なソフトのインストール

■CSRの作成

■証明書の取得

■Apacheの設定

 

 

■SSLの必要性

SSL(Secure Socket Layerの略)は、クライアント(Webブラウザなど)とWebサーバーとの通信を暗号化する仕組みです。暗号化することにより、通信経路の途中でデータを盗聴されたとしても、それを解読することが極めて困難になります。

また、SSLの中で、「EV SSL」という証明書には、なりすましを防ぐという側面もあります(表1)。認証書を発行する業者が、登記などの各種の情報をもとに、ドメインの所有者が本物かどうかを確認した上で、証明書を発行するという仕組みを取ります。

クレジットカード番号など、他人に知られると問題がある情報を扱うWebサイトでは、SSLは必須です。また現在では、HTTPのすべての通信をSSL化しようという「常時SSL」が一般化しつつあります。Webサーバーを運用するなら、SSL化は避けて通れないと言ってよいでしょう。

 

表1 SSLの証明書の種類

種類 ドメイン認証型

(DV)

企業認証型

(OV)

EV型
通信の暗号化
サイト運営者の実在を証明 ×
個人での取得 × ×
Webブラウザのアドレスバーに組織名を表示 × ×
信頼性

 

 

■必要なソフトのインストール

WebサーバーとしてApacheを使う場合、「OpenSSL」と「mod_ssl」の2つのソフトを使います。次のコマンドを実行して、これら2つのソフトをインストールします。

 

リスト 必要なソフトのインストール

sudo yum -y install openssl mod_ssl

 

■CSRの作成

WebサイトをSSL化するには、証明書を発行する業者に「CSR」という情報を送ることが必要です。CSRは「Certificate Signing Request」の略で、自分のWebサイトに関する情報を暗号化したファイルです。

なお、ここで紹介する手順は一般的なものです。業者によっては証明書を発行する際に細かな指定をするところもありますので、業者のサイトなどで手順をご確認ください。

 

・秘密鍵ファイルの作成

CSRを作成するには、まず次のコマンドを実行して、秘密鍵ファイルを作成します。「秘密鍵ファイル名」のところは、任意のファイル名を指定することができます。

例えば、秘密鍵ファイル名を「server.key」にする場合だと、「openssl genrsa -des3 -out server.key 2048」のコマンドを実行します。

 

リスト 鍵ファイルの作成

openssl genrsa -des3 -out 秘密鍵ファイル名 2048

 

実行すると「Enter pass phrase:」のプロンプトが表示されます。パスフレーズ(パスワード)を自分で決めて入力します。このパスフレーズは後で使いますので、メモしておきます。

 

・CSRの作成

秘密鍵ができたら、次のコマンドを実行して、CSRを作成します。「秘密鍵ファイル名」のところは、先ほど作成した秘密鍵ファイルの名前にします。例えば、秘密鍵ファイル名を「server.key」にした場合だと、「openssl req -new -key server.key -out server.csr -sha256」のコマンドを実行します。

 

リスト CSRの作成

openssl req -new -key 秘密鍵ファイル名 -out server.csr -sha256

 

最初に、「Enter pass phrase for server.key:」のプロンプトが表示されますので、秘密鍵を作成した時と同じパスフレーズを入力します。その後、表2の順に、ドメインに関する情報を入力していきます。

 

プロンプト 入力する情報
Country Name (2 letter code) [XX]: 「.JP」と入力
State or Province Name (full name) []: 都道府県名
Locality Name (eg, city) [Default City]: 市町村名
Organization Name (eg, company) [Default Company Ltd]: 組織名
Organizational Unit Name (eg, section) []: 部署名
Common Name (eg, your name or your server’s hostname) []: SSL化するサイトのFQDN

(例:www.foo.com)

Email Address []: Enterキーを押す
A challenge password []: Enterキーを押す
An optional company name []: Enterキーを押す

 

 

■証明書の取得

次に、証明書発行業者で、SSLの証明書を発行します。この手順は、個々の業者によって異なりますので、業者のサイトなどをご参照ください。

少なくとも、CSRの情報は業者に送る必要があります。また、EV SSLを取得する場合だと、業者が指定した書類を作成して送付することも必要になります。

ドメイン認証型の証明書だと、業者によりますが、申し込んで数分~数時間程度で手続きが完了します。一方、EV SSLの証明書の場合は、手続きに数日の時間がかかります。

 

 

■Apacheの設定

証明書を取得できたら、Apacheの設定に移ります。

 

・SSL設定ファイル用ディレクトリの作成

SSLの設定のために、いくつかのファイルを使います。それらのファイルを保存するために、次のコマンドを実行して、ディレクトリを1つ作ります。

 

リスト SSL設定ファイル用のディレクトリの作成

sudo mkdir /etc/httpd/conf/ssl.crt

 

・証明書ファイルのコピー

証明書が発行されると、業者から「中間証明書」と「サーバー証明書」の2つのファイルが送られてきます。SFTPを使って、これらのファイルをサーバーにアップロードします。

その後、次のコマンドを実行して、これらのファイルをSSL設定ファイル用のディレクトリにコピーします。「中間証明書のファイル名」と「サーバー証明書のファイル名」の箇所は、実際のファイル名に置き換えます。

 

リスト 証明書ファイルのコピー

sudo cp 中間証明書のファイル名 /etc/httpd/conf/ssl.crt/ca.crt

sudo cp サーバー証明書のファイル名 /etc/httpd/conf/ssl.crt/server.crt

 

・秘密鍵ファイルのパスフレーズの解除とコピー

次に、秘密鍵のファイルもSSL設定ファイル用のディレクトにコピーします。ただし、そのままコピーすると、Apacheの起動時にパスフレーズを入力しなければならなくなるので、パスフレーズを解除してコピーします。

これには次のコマンドを実行します。「Enter pass phrase for server.key:」のプロンプトが表示されますので、秘密鍵のパスフレーズを入力します。

 

リスト 秘密鍵ファイルのパスフレーズの解除とコピー

sudo openssl rsa -in server.key -out /etc/httpd/conf/ssl.crt/server.key

 

・ssl.confファイルへの追加

次に、「ssl.conf」というファイルに、SSLのための設定を追加します。

まず、次のコマンドを実行して、nanoでssl.confファイルを開きます。

 

リスト nanoでssl.confファイルを開く

sudo nano /etc/httpd/conf.d/ssl.conf

 

ssl.confが開いたら、最後までカーソルを移動させ、次の行を追加します。

 

リスト ssl.confに追加する行

NameVirtualHost *:443

 

さらに、次の部分を追加します。「HTMLなどの保存先ディレクトリ」「ドメイン名」「ログファイルの保存先ディレクトリ」は、実際のものに合わせて書き換えます。

 

リスト SSL化の設定

<VirtualHost *:443>

DocumentRoot HTMLなどの保存先ディレクトリ

ServerName ドメイン名

SSLEngine on

SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt

SSLCertificateChainFile /etc/httpd/conf/ssl.crt/ca.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl.crt/server.key

ErrorLog ログファイルの保存先ディレクトリ/ssl_error_log

CustomLog ログファイルの保存先ディレクトリ/ssl_access_log common

</VirtualHost>

 

・Apacheの終了/起動と動作確認

最後に、次のコマンドを実行して、Apacheをいったん終了した後、起動しなおします。

 

リスト Apacheの終了と起動

sudo service httpd stop

sudo service httpd start

 

そして、次の手順でSSLの動作を確認します。

①HTMLなどの保存ディレクトリに、テスト用のHTMLファイルを設置します。

②Webブラウザで「https://ドメイン/テスト用HTMLファイル」のようなアドレスにアクセスします。

③Webブラウザのアドレスバーに、SSLを示すアイコンが表示されることを確認します。

 

 

 

 

うちだ
サービスクリエーション本部所属        (監修:とみなが)       

オススメ記事

関連サービス

VPS VPSクラウド