0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】AWSアカウント作成からHTTPS(SSL証明書)対応までの完全ガイド

Posted at

はじめに

本記事では、AWS初心者の私が実際にEC2インスタンスを作成し、独自ドメインでHTTPS通信(SSL証明書)を有効化するまでの手順を備忘録としてまとめます。対象は以下のような方です:

  • Spring BootやJavaアプリをAWS上で公開したい人
  • 独自ドメインでHTTPS(SSL)通信を実現したい人
  • docker-composeでアプリケーションを構築している人

ステップ1:AWSアカウント作成とEC2の立ち上げ

1. AWS公式サイト(https://aws.amazon.com/jp/?nc2=h_lg) からアカウントを作成
2. マネジメントコンソールへログイン
3. EC2インスタンスを作成(Amazon Linux 2023を推奨)
4. セキュリティグループに以下を許可:

  • SSH (ポート22)
  • HTTP (ポート80)
  • HTTPS (ポート443)
  • 必要に応じて8080も追加

5. .pem キーファイルをダウンロード
6. ローカル端末からSSHで接続:

# ssh -i "キーファイルの格納パス" ec2-user@<パブリックIP>
ssh -i "C:\AWS\moneytrack-key.pem" ec2-user@<パブリックIP>

ステップ2:Docker & docker-compose環境構築

# Docker
# ① パッケージ更新
sudo yum update -y
# ② Dockerのインストール
sudo yum install -y docker
# ③ Dockerサービスの起動
sudo systemctl start docker
# ④ 再起動したときに自動でDockerが起動されるようにする
sudo systemctl enable docker
# ⑤ ec2-user を docker グループに追加(sudo無しで使えるように)
sudo usermod -aG docker ec2-user
# ⑥ 一度ログアウトして再接続
exit

# Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

ステップ3:アプリのデプロイ

1. scpでアプリのjarファイルやdocker-compose.ymlを転送:

# scp -i "キーファイルの格納パス" docker-compose.yml ec2-user@<パブリックIP>:/home/ec2-user/
scp -i "C:\AWS\moneytrack-key.pem" docker-compose.yml ec2-user@<パブリックIP>:/home/ec2-user/

2. EC2上でdocker-compose up -d --build

ステップ4:Route 53で独自ドメインを取得

1. AWSマネジメントコンソール > Route 53 > ドメインの購入
2. 例:moneytreeapp.net
3. ドメイン取得後、自動でホストゾーンが作成されます
4. ホストゾーンにAレコードを追加:

  • 名前:空欄(ルートドメイン)
  • タイプ:Aレコード
  • 値:EC2のパブリックIPアドレス

ステップ5:Nginx設定とHTTPS対応

Nginxインストール

sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

nginx.confの編集

sudo vi /etc/nginx/nginx.conf

以下のように編集:

server {
    listen 80;
    server_name moneytreeapp.net;
    location / {
        proxy_pass http://localhost:8080;
    }
}

再読み込み:

udo nginx -t
sudo systemctl reload nginx

CertbotでHTTPS対応

sudo amazon-linux-extras enable epel -y
sudo yum install certbot python3-certbot-nginx -y
sudo certbot --nginx -d moneytreeapp.net

HTTPS用の設定が/etc/nginx/nginx.confに追記されるか確認。ない場合は手動で追加:

server {
    listen 443 ssl;
    server_name moneytreeapp.net;

    ssl_certificate /etc/letsencrypt/live/moneytreeapp.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/moneytreeapp.net/privkey.pem;

    location / {
        proxy_pass http://localhost:8080;
    }
}

リダイレクト設定も追記:

server {
    listen 80;
    server_name moneytreeapp.net;
    return 301 https://$host$request_uri;
}

再度適用:

sudo nginx -t
sudo systemctl restart nginx

ステップ6:HTTPSでアクセス確認

ブラウザで https://moneytreeapp.net にアクセスして、HTTPSの鍵マークが表示されれば成功!

おわりに

今回はAWSのアカウント作成からHTTPS化までを一連の流れでまとめました。
最初は戸惑う部分も多いですが、一つずつクリアしていけば問題なく公開までたどり着けます!

この記事がどなたかの参考になれば幸いです。

参考文献

AWS公式ドキュメント
https://docs.aws.amazon.com/
Certbot公式
https://certbot.eff.org/
nginx公式ドキュメント
https://nginx.org/en/docs/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?