Apache+SSL環境を構築する

Apache+SSL環境構築

ショッピングサイト作るわけでも、重要なデータがあるわけでもないけど、なんとなくやってみたくなったのでWebサーバをSSLに対応させ、通信経路を暗号化する。

ここでは、自己証明のサーバー証明書(オレオレ認証)でのSSL環境を構築する。

 

 

 

・OpenSSLがインストールされているか確認する。

aptitude show openssl
 
パッケージ: openssl
状態: インストール済み
自動的にインストールされた: yes
バージョン: 0.9.8g-15+lenny11
優先度: 任意
セクション: utils
メンテナ: Debian OpenSSL Team
<pkg-openssl-devel@lists.alioth.debian.org>
展開サイズ: 2408k
依存: libc6 (= 2.7-1), libssl0.9.8 (= 0.9.8f-5), zlib1g (= 1:1.1.4)
提案: ca-certificates
競合: ssleay ( 0.9.2b)
説明: Secure Socket Layer (SSL) バイナリおよび関連暗号化ツール
 本パッケージには、openssl バイナリおよび関連ツールが含まれます。 
 
 これは、OpenSSL による SSL の実装の一部です。 
 
 次のような暗号化操作を実行したい場合、本パッケージが必要です。
 * RSA、DH および DSA 鍵パラメータの作成;
 * X.509 認証、CSR および CRL の作成;
 * メッセージダイジェストの計算;
 * 暗号による暗号化並びに複号;
 * SSL/TLS クライアントおよびサーバのテスト;
 * S/MIME 署名又は暗号化されたメールの処理;
</pkg-openssl-devel@lists.alioth.debian.org>

デフォルトでインストールされているので、次の設定を行う

・設定ファイル「openssl.cnf」を編集する

バックアップ
cp /etc/ssl/openssl.cnf /etc/ssl/openssl.cnfBAK
 
vi /etc/ssl/openssl.cnf
 
[ usr_cert ]
 
# These extensions are added when 'ca' signs a request.
 
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
 
basicConstraints=CA:FALSE
 
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
 
# This is OK for an SSL server.
# nsCertType                    = server
  ↓コメントを外す
nsCertType                    = server,client
 
:
:
[ v3_ca ]
 
# Extensions for a typical CA
 
# PKIX recommendation.
 
subjectKeyIdentifier=hash
 
authorityKeyIdentifier=keyid:always,issuer:always
 
# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = CA:true
 
# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign
 
# Some might want this also
# nsCertType = sslCA, emailCA
  ↓コメントを外す
nsCertType = sslCA, emailCA

・秘密鍵の作成

 cd /usr/lib/ssl/misc/
./CA.sh -newca
↑
これで作るとFireFoxとかでエラーになるので
これで作る
↓
cd /usr/lib/ssl/misc/
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/cakey.pem
 
出来たか確認
root@brokendish:/etc/apache2/ssl# pwd
/etc/apache2/ssl
root@brokendish:/etc/apache2/ssl# ll
合計 16
drwxr-xr-x 2 root root 4096 2011-06-21 00:50 .
drwxr-xr-x 8 root root 4096 2011-06-20 13:46 ..
lrwxrwxrwx 1 root root    9 2011-06-21 00:50 6Xe85a30 -> cakey.pem
-rw------- 1 root root 1522 2011-06-21 00:50 cakey.pem

・ブラウザ用の証明書作成

openssl x509 -inform pem -in /etc/apache2/ssl/cakey.pem -outform der -out /home/hoge/ca.der

作成されたファイルは、クライアントのウェブブラウザにインストールして使用する。

ブラウザ用の証明書は「認証局証明書」のインポートで取り込む

・Apache2のSSL設定ファイルを編集

作成した証明書+秘密鍵を読み込むようにする。

まずは、バックアップ

cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/010-default-ssl
mv /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/BK-default-ssl

ファイルを編集

vi /etc/apache2/sites-available/010-default-ssl
 
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
 
        #   A self-signed (snakeoil) certificate can be created by installing
        #   the ssl-cert package. See
        #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #   If both key and certificate are stored in the same file, only the
        #   SSLCertificateFile directive is needed.
        #SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
        SSLCertificateFile    /etc/apache2/ssl/cacert.crt
        SSLCertificateKeyFile /etc/apache2/ssl/cakey.pem
 
       ↓
 
        #   A self-signed (snakeoil) certificate can be created by installing
        #   the ssl-cert package. See
        #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
        #   If both key and certificate are stored in the same file, only the
        #   SSLCertificateFile directive is needed.
        #SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
        SSLCertificateFile    /etc/apache2/ssl/cakey.pem
        SSLCertificateKeyFile /etc/apache2/ssl/6Xe85a30

メモ

6Xe85a30はcakey.pemのシンボリックリンクなので同じものを設定していることになるけど

Apacheがうまいことやってくれるらしい。。

・sslモジュールの有効化

a2enmod ssl

・sslモジュールの無効化

a2dismod ssl

・010-default-sslを有効化

a2ensite 010-default-ssl

・Apache本体を再起動

/etc/init.d/apache2 restart
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です