無料でSSL証明書を取得、設定する方法を記載します。
作業環境はCentOS7とnginx を使用します。
Amazon Linux 2でも試して見ましたが、以下でyumしているツールがうまくインストールできず断念しました。
Certbot クライアントをインストール
まずはCerbot クライアントをインストールします。
sudo yum install epel-release
sudo yum install certbot
SSL 証明書の取得
事前に80ポートと443ポートを開放しておきましょう。
-d 以下のはSSL通信がしたいサイトのFQDN を入力します。
コマンド実行後、メールアドレスを尋ねられるので、入力しEnterを押します。
certbot certonly --standalone -d www.hoge.com
コマンドの実行が終わると、/etc/letsencrypt/live ディレクトリが作成され、その中に証明書が作成されます。その証明書を使いnginx.confに以下の設定を追加します。(SSLを使用するのに必要な設定のみ記載しています)
server {
・・・・
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.hoge.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.hoge.com/privkey.pem;
・・・・
}
あとは、nginxを再起動して、https://www.hoge.comにアクセスすると、サイトにSSLでアクセスできるはずです。
Docker-composeを使用していると、docker-compose.yml の修正も必要ですが。
アクセスできない場合は、間違えてhttpsではなくhttpでURLを入力していしまっているかもしれません。
基本的ですが私は引っ掛かりました。笑
http接続をしていると、次のような画面が表示されます。
入力例
正: https://www.hoge.com
誤: http://www.hoge.com
まあ、そもそもhttpから接続してもSSLで通信して欲しいですよね。
nginxでのリダレクトの方法についてはこちらの記事で紹介しているので、もしよければ併せてお読みください。【nginx】httpからのアクセスをhttpsへリダイレクトする方法