こんにちは。くまごろーです。
この前サーブレットアプリを作成したとき、ついでにSSL証明書の導入にも挑戦したので、そのやり方についてまとめてみます。
SSLとは、正式名称を「 Secure Sockets Layer 」いいます。で、実際どういうものなのかうまく説明できなかったので、わかりやすい説明のサイトを見つけてきました。(-_-)
SSLとは、インターネットなどのIPネットワークでデータを暗号化して送受信するプロトコル(通信手順)の一つ。データを送受信する一対の機器間で通信を暗号化し、中継装置などネットワーク上の他の機器による成りすましやデータの盗み見、改竄などを防ぐことができる。
SSL(Secure Sockets Layer)とは - IT用語辞典 e-Words
HTTPプロトコルは非暗号化の通信方法で、様々なリスクを孕んでいます。そのため、上記のSSLと組み合わせて通信を暗号化することが一般的になっており、「HTTPSプロトコル」と呼ばれています。(ちなみに、「HTTPS」は「HTTP over SSL」の略)
2 WebサイトをSSL化するには?
通信を暗号化(SSL化)するにはどうすればいいのか?SSL化には、SSL証明書が必要になります。
インターネットに公開するWebサイトをSSL化するには、SSL証明書(正確には「SSL/TLSサーバー証明書」と言います)が必要です。
一般的には、ジオトラストやグローバルサインなどの認証局が発行する有料の証明書を購入してサーバーにインストールします。
しかし無料のSSL証明書発行サービスであるLet’s Encryptの正式サービスが2016年4月に開始されました。
これにより、誰でも無料でSSL証明書を手に入れることができるようになりました。
ネコでもわかる!さくらのVPS講座 ~第六回「無料SSL証明書 Let’s Encryptを導入しよう」 | さくらのナレッジ
なんと、SSL証明書は無料で取得することもできるらしい。というわけで、今回は上記の「Let's Encrypt」を利用することにしました。
3 手順
Let's Encryptを利用する場合、あらかじめドメインを取得しておく必要があるらしい。(IPアドレスは使用できないので)ドメインは「お名前ドットコム」等のサイトで簡単に取得できます。
https://www.onamae.com/
以下のコマンドでmod_sslを導入する。
# yum install mod_ssl
# systemctl restart httpd
導入されているか確認するには以下のコマンド。
# httpd -M
(2)ファイアウォールで「443番ポート(https用)」を開放する。
以下のコマンドで、ファイアウォールがhttps通信を許可しているか確認。
# firewall-cmd --list-all
httpsが無ければ、ファイアウォールの設定を変更する。
こちらのコマンドでhttpsをファイアウォールに追加します。
# firewall-cmd --add-service=https --zone=public --permanent
ファイアウォールを再起動。
# systemctl restart firewalld
(3)Let's Encrypt をインストールする
以下のコマンドでインストール。
# yum install certbot python2-certbot-apache
インストールできたら、certbotコマンドを実行して、証明書をインストールする。
# certbot --apache -d xxxx.com
※ 「xxxx.com」には自分のドメインを入力。
※ 上記コマンドを実行すると、いくつか質問されるので、それぞれ回答する。
1つ目:Let's Encryptからの連絡を受け取るためのEmailアドレスを入力する
2つ目:規約に同意するか(Aを入力)
3つ目:Let's EncryptパートナーにEmailを公開するか(どちらでも可)
4つ目:1を選択
5つ目:http接続を残しておくか、http接続時にhttpsへリダイレクトさせるか(2を選択)
全て回答したら、以下のコマンドでhttpdを再起動。
# systemctl restart httpd
これでhttps接続ができるようになったはずです・・・(=_=)