Apache2をHTTPS化

HTTPSとはTLS(Transport Layer Security)を使って通信内容が暗号化されます。HTTPに比べて安全にWebの情報をやり取りすることが可能です。最近になってブラウザで「このサイトへの接続は安全ではありません」という表示が出ることに気づいて、何となく気持ち悪かったのでHTTPS化を行いました。

HTTPでアクセスした場合の表示「このサイトへの接続は安全ではありません」

今回は、Apache2+オレオレ証明書を発行してHTTPS化を実現しています。

手順は以下です。

  1. OpenSSLのインストール
  2. 秘密鍵の生成
  3. サーバー証明書の作成
  4. Apache2の設定

1.OpenSSLのインストール

以下のコマンドでopensslをインストール

$sudo apt-get install openssl

インストールが完了すると、以下の「openssl」コマンドを打つとプロンプトが返ってきます。※ exitでぬける

$ openssl
OpenSSL> exit

2.秘密鍵の生成

Apache2の配下に鍵格納用のフォルダ「ssl」を作成します。

$cd /etc/apache2
$sudo mkdir ssl

OpenSSL で RSA の秘密鍵を生成します。

$ sudo openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus (2 primes)
..+++++
…………+++++
e is 65537 (0x010001)
Enter pass phrase for server.key:パスワードを入力
Verifying - Enter pass phrase for server.key:パスワードを入力

このままだとApacheを再起動すると毎回パスワードを求められるので、Encriptでパスワード入力を解除します。

$ sudo openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:パスワードを入力
writing RSA key

3.サーバー証明書の作成

証明書署名要求(CSR)を作成

$sudo openssl req -new -days 3650 -key server.key -out server.csr

作成時の入力情報です。

Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Fukuoka
Locality Name (eg, city) []:Itoshima
Organization Name (eg, company) [Internet Widgits Pty Ltd]:RaspberryPi
Organizational Unit Name (eg, section) []:HomeServer
Common Name (e.g. server FQDN or YOUR name) []:shikichi.ddo.jp
Email Address []:mail@192.168.1.101
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

これで要求ファイルが生成できたので証明書を発行します。

$ sudo openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650

Signature ok
subject=C = JP, ST = Tokyo, L = xxx, O = xxx, OU = xxx, CN = 127.0.0.1:443, emailAddress = mail@sample.com
Getting Private key

以下の3つのファイルが生成されます。

$ ls -l
-rw-r--r-- 1 root root 928 6月 19 11:13 server.crt
-rw-r--r-- 1 root root 684 6月 19 11:12 server.csr
-rw------- 1 root root 887 6月 19 11:08 server.key

パーミッションを400に変更しておきましょう。

$ sudo chmod 400 server.*
$ ls -l
-r-------- 1 root root 928 6月 19 11:13 server.crt
-r-------- 1 root root 684 6月 19 11:12 server.csr
-r-------- 1 root root 887 6月 19 11:08 server.key

4.Apache2の設定

ApacheのSSLモジュールを有効化します。

$ sudo a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
systemctl restart apache2

作成した証明書などを有効にするため「/etc/apache2/sites-available/」に移動します。

$ cd /etc/apache2/sites-available/

設定ファイル「default-ssl.conf」を編集します。

$ sudo vi default-ssl.conf

変更箇所は以下です。

ServerName shikichi.ddo.jp:443 #追加
・・・
#SSLCertificateFile?/etc/ssl/certs/ssl-cert-snakeoil.pem #コメント
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key #コメント
SSLCertificateFile?-/etc/apache2/ssl/server.crt #追加
SSLCertificateKeyFile /etc/apache2/ssl/server.key #追加

最後に、SSLサイトを有効化しApacheを再起動します。

$sudo a2ensite default-ssl
$sudo service apache2 restart

https://サイト名でアクセスできればOKです

Follow me!

コメントを残す

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

CAPTCHA