Ubuntu で、Apache2 の SSL を有効にする(オレオレ証明の設定方法)

  1. openssl をインストール
    ==================
sudo apt-get install openssl
  1. 秘密鍵を作る
    ==================

仮に server.key としよう。鍵の長さは 4096 バイト以上にすること。そうでないと最近のブラウザでは暗号が弱くて SSL の接続の段階で拒否られる。

# Do not use 2048 byte key - It does not work on modern browsers.
sudo openssl genrsa -des3 -out server.key 4096

Apache2 を起動するとき秘密鍵のパスワードを毎回聞かれないようにするには以下のようにする

# Do not use 2048 byte key - It does not work on modern browsers.
sudo openssl genrsa -out server.key 4096 # e.g. no password
  1. 公開鍵の署名リクエストを作る
    ==================

server.csr としよう。

sudo openssl req -new -key server.key -out server.csr
  1. 署名付の証明書(公開鍵)を作る
    ==================

server.crt としよう。有効期間はオレオレなので 10年くらいでいいだろう^^;

sudo openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
  1. 適切なディレクトリにコピー
    ==================

※コピー先のパーミッションに注意

sudo cp server.crt /etc/ssl/certs/; sudo cp server.key /etc/ssl/private/
  1. /etc/apache2/sites-available/default-ssl を編集
    ==================
sudo vi /etc/apache2/sites-available/default-ssl

以下の 2行をコメントアウト:

# SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
# SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

次の 2行を追加::

SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
  1. Apache2 の SSL のモジュールを有効にする
    ==================
sudo a2enmod ssl
sudo a2ensite default-ssl
  1. Apache2 を再起動する
    ==================

秘密鍵のパスワードを聞かれるので答える

sudo service apache2 reload
  1. オプション1:常に SSL でアクセスさせる
    ==================
sudo a2enmod rewrite
sudo vi /etc/apache2/sites-available/default

/etc/apache2/sites-available/000-default に以下の 3行を追加

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  1. オプション2: +ExecCGI を追加
    ==================
sudo vi /etc/apache2/sites-available/default-ssl

広告