Help us understand the problem. What is going on with this article?

EC2とApacheでSSL通信(RapidSSL)を行う

More than 3 years have passed since last update.

SSL暗号化通信を行うまでのサーバ設定

HTTPではセキュリティに問題があるということで,今回は初めてSSL暗号化通信の設定を行ってみたいと思います.

SSL通信とは?

まずSSL通信を使うと嬉しいこと.

  • やりとりされるデータを暗号化できる

  • Webサイトの運営者が本物であるか認証できる

アクセス先が安全なWebサイトであることを保証してくれるものと考えるとわかりやすい.
SSL通信で行われている「共通鍵暗号方式」や「公開鍵暗号方式」などの詳しい仕組みの解説は他を参考にしていただくとして,
ここではサーバ上での設定方法について調べた結果をまとめていきます.
(参考)SSLとは?仕組みから、共有・独自SSLの違い、証明書についてが分かるまとめ

サーバ上の設定詳細

開発環境

  • EC2(Amazon Linux AMI)

  • Apache2.2.31

(参考)さくらのVPS(CentOS 5.5)に RapidSSL をインストールするまでのメモ

SSL通信を実現するためにはOpenSSLというライブラリを使います.
EC2にはデフォルトでインストールされていると思いますが念のためコマンドで確認

$ rpm -q openssl

ApacheをSSLに対応させるためのモジュールをインストール

$ yum -y install mod_ssl

秘密鍵を作成.これを使って暗号化して送られてきたデータを複合化します.
RapidSSLの認証書が2048bitなので2048を指定する.

$ cd /etc/pki/tls/private/
$ openssl genrsa -des3 -out keyname.key 2048

秘密鍵からCSRを生成する.
CSRファイルとは,SSL通信に利用する公開鍵暗号系の公開鍵に,コモンネームなどの情報を付加したものです.
これが認証局に提出する署名リクエスト(Certificate Signing Request)となります.

$ openssl req -new -key server.key -out csrname.csr

CSRをRapid-SSL.jpに送信して、証明書発行を申し込む.
そして受け取った認証用ファイルを,申請対象のFQDN(コモンネーム)配下に置くことで
認証局がファイルを確認して証明書を発行します.
(参考)ファイル認証について

メール認証後,サーバ証明書が送られてくるのでCRTファイルとしてサーバにあげます.

# crtファイルを作成してコピー
$ cd /etc/pki/tls/certs/
$ touch crtname.crt
$ vim crtname.crt

サーバ証明書はセキュリティ上の理由等により複数階層による認証を行っているため,
ここから中間CA証明書をダウンロードしてサーバにあげます,

# 中間CA証明書の中身をコピー
$ cd /etc/pki/tls/certs/
$ touch rapidssl-chain.crt
$ vim rapidssl-chain.crt

ここから,バーチャルホストを設定していない場合はssl.confを直接編集します.

ssl.conf
$ vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/crtname.crt
SSLCertificateKeyFile /etc/pki/tls/private/keyname.key
DocumentRoot "/var/www/html"
ServerName www.example.com:443

バーチャルホストを設定している場合はその設定ファイルを編集します.

virtualhost.conf
$ vim /etc/httpd/conf.d/virtualhost.conf
NameVirtualhost *:443
<VirtualHost *:443>
    ServerName www.example.com
    DocumentRoot /path/to/documentroot

    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/crtname.crt
    SSLCertificateKeyFile /etc/pki/tls/private/keyname.key
    SSLCertificateChainFile /etc/pki/tls/certs/rapidssl-chain.crt

    ErrorLog logs/ssl.error.log
    CustomLog logs/ssl.access.log combined env=!no_log
</VirtualHost>

Apacheのconfigファイルを編集したのでhttpdを再起動.

$ service httpd restart

以上で快適なSSL通信ライフを送れるはず!
あとは,HTTPからHTTPSへのリダイレクトの設定などをするといいかも.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした