HTTPSとはTLS(Transport Layer Security)を使って通信内容が暗号化されます。HTTPに比べて安全にWebの情報をやり取りすることが可能です。最近になってブラウザで「このサイトへの接続は安全ではありません」という表示が出ることに気づいて、何となく気持ち悪かったのでHTTPS化を行いました。
今回は、Apache2+オレオレ証明書を発行してHTTPS化を実現しています。
手順は以下です。
- OpenSSLのインストール
- 秘密鍵の生成
- サーバー証明書の作成
- 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です