無料でHTTPS通信をしようと思った時の方法です。
お金ないけど、証明書ほしいなーとか思って使ってみた方法です。
きちんとしたサービスを運用するならお金をかけてきちんとやってください。
無料で運用できるならそっちのほうがいいですが、お金をかけるとかけないとでは気持ちの入り方や信頼が違うので。
あくまで、勉強に使いたいとか、個人開発のテスト用なのど人向けです。
前提と目標
GCP (Google Cloud Platform)上にUbuntuの仮想マシンインスタンスを作成しました。
そのUbuntuサーバー上にウェブサーバーとしてnginxをインストールしてあります。
nginxはインストール済みかつUbuntuサーバー利用として話は進めていきます。
今回の目標はそのnginxで証明書を使用してHTTPS通信ができるようにすることです。
ドメイン取得
まずはDDNSNowでドメインを取得します。
以下のリンクからアクセスしてください:
DDNSNow公式サイト
DDNS nowについての説明は省略します。詳細はリンク先に記載されているので、そちらを参照してください。
新規登録手順
- 希望するサブドメインとパスワードを入力します
- 登録ボタンを押すと、ドメインの取得が完了します
パスワードやドメインは後で使うので忘れないでください。
取得時点では、取得の際に使用していたIPアドレスに対してドメインが紐づけられています。
ただし、この設定は後で変更することが可能です。
ドメイン設定の変更方法
1. Linuxサーバーに移動
取得したドメインをサーバーで利用できるように設定します。
TeraTerm等でサーバーに接続してください。
ここからは、DDNSnowのマニュアルに従って進めていきます。
2. cronの設定
以下のコマンドを実行します
crontab -e
3. 設定ファイルの追記
設定ファイルの最後に次のコードを追記します
0-59 * * * * wget -O DDNSNow_update.log "https://f5.si/update.php?domain=ユーザ名&password=パスワードもしくはAPIトークン"
この設定では、毎分wgetコマンドが実行され、DDNSの更新を行います。その結果はDDNSNow_update.logというファイルに保存されます。
wgetのインストール
もし、wgetがインストールされていなければ以下のコマンドでインストールしてください。
apt install wget
LetsEncryptを使って、証明書を取得する
LetsEncryptは、無料の認証局っていうイメージです。
イメージですっていうかそうです。
LetsEncryptについて詳しく知りたい方は、以下のリンクを参考にしてください:
1.certbotのインストール
まず、certbotをインストールします。Certbotは、無料かつ自動で証明書を発行できるツールです。
今回はCertbotとそのnginxプラグインをインストールします。
apt install certbot python3-certbot-nginx
インストールがうまくいかない場合は、まず以下のコマンドでパッケージリストを更新してみてください
apt update
2.nginxの起動
次にnginxを起動させます
systemctl restart nginx
3.証明書の取得
次のコマンドで証明書を取得します
sudo certbot --nginx -d ドメイン名
指定したドメイン名に対して証明書が発行され、その後nginxの設定も自動で行われます。
この際、いくつかの質問が表示されますが、指示に従って回答してください。
以上で設定が完了です。
ドメインをブラウザで検索し、HTTPS通信が有効になっていることを確認してください。