Apache2とmod_sslの設定

 Apacheの通信をSSL化するには、Apacheのモジュールのひとつであるmod_ssl を使う方法と、ApacheへのパッチであるApache-SSLを使う方法があり、 ここではmod_sslを使う方法を試しました。 Apache 2.0.50、OpenSSL 0.9.6bです。

  1. 秘密鍵の作成

    % openssl md5 * > a.dat
    % openssl genrsa -rand a.dat -des3 1024 > seckey.pem
    Enter PEM pass phase: *******
    Verifying password - Enter PEM pass phase: *******
    

  2. CSR(証明書発行要求書)の作成

    % openssl req -new -key seckey.pem -out csr.pem
    Enter PEM pass phase: *******
    Country Name(2 letter code) : JP
    State or Province Name : Kanagawa
    Locality Name(eg, city) : Yokohama
    Organization Name(eg, company) : Nishinihon Kumomakka Systems Co.Ltd.
    Organizational Unit Name(eg, section) : Cancer
    Common Name(eg, Your Name) : cancer.nsnhnkmmkk.co.jp
    

  3. サーバ証明書の作成

    % openssl x509 -in csr.pem -out server.crt -req -signkey seckey.pem
    Enter PEM pass phrase: *******
    

  4. パスフレーズの削除(必要に応じて)

    % mv seckey.pem seckey.pem.protected
    % openssl rsa -in seckey.pem.protected -out seckey.pem
    Enter REM Pass Phrase: (現在のパスフレーズを入力)
    

    パスフレーズを削除しない場合、Apacheの起動時に聞いてきます。 つまり、OSのブートと同時に自動起動できないことになります。
  5. 秘密鍵とサーバ証明書を、どこか場所を決めて配置します。

    # mkdir $APACHE_HOME/conf/ssl
    # mv *.pem *.crt $APACHE_HOME/conf/ssl
    

  6. Apacheの設定をします。 $APACHE_HOME/conf/httpd.confには、

    <IfModule mod_ssl.c>
        Include conf/ssl.conf
    </IfModule>
    

    という記述があることを確認します。 次に、$APACHE_HOME/conf/ssl.conf を編集します。

    Listen                443
    ServerName            cancer.nsnhnkmmkk.co.jp:443
    DocumentRoot          "/usr/local/apache2/htdocs-ssl"
    SSLCertificateFile    /usr/local/apache2/conf/ssl/server.crt
    SSLCertificateKeyFile /usr/local/apache2/conf/ssl/seckey.pem
    

    SSL通信のポート番号のデフォルトは443です。 SSL通信の場合の文書ルートディレクトリ、 秘密鍵ファイル、CSRファイルの名前を適切に指定します。
    なお、サーバが私の使っているRedHat Linux 7.3のように、 ipchainsファイアウォールを使っている場合は、 ポート443を明示的に開放しないと他のクライアントからアクセスできません。 これはSambaのポートを開ける場合と同じように、 lokkitユーティリティを使うか、/etc/sysconfig/ipchainsを編集して設定します。
  7. Apacheを停止し、再度起動します。 このとき、通常の「apachectl start」の代わりに、 「apachectl startssl」 とするのがポイントです。 パスフレーズを削除していなければ、ここでメッセージが出て、聞いてきます。 エラーログにエラーが出ていなければOKです。
  8. 独自CAの登録ファイルをクライアントに配布できるようにします。 まず、$APACHE_HOME/conf/mime.types に次の行を追加します。

    application/x-x509-ca-cert der
    

  9. DER形式にエンコードしたファイルを作ります。

    % openssl x509 -inform PEM -outform DER < server.crt > server.der
    

  10. これをApacheドキュメントツリーに置いて配布します。
  11. クライアントはWebブラウザで「https://サーバ名:ポート番号/」 でアクセスを確認します。ポート番号のデフォルトは443で、 このポートに設定している場合は省略できます。

Open Source Web Architecture Top

(first uploaded 2002/09/18 last updated 2002/11/15, URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル