📄

awsのec2、Railsでドメイン証明書ファイルを設置・認証する方法

2023/03/10に公開

概要

  • awsのec2でデプロイしたRailsアプリケーションで、ファイル設置式のドメイン所有者認証を行いたい。
  • 普通にroot配下に設置しても、404エラーになりファイルにアクセスできない。
  • publicに設置、もしくはpublicからroot配下へシンボリックリンクで接続すればOK!

以下、詳細です。

やりたいこと

awsのec2でデプロイしたRailsアプリケーションで、ドメイン所有者確認用のファイルを設置・認証させたい。

想定ケース

下記の要件を想定。

  • 外部サービスと連携するために、ドメイン所有者としての認証が必要。
    ( ninsyou.file ) と仮定。
  • 認証には、認証用ファイルをダウンロードしてドメイン配下に設置、外部からアクセスできることが条件。
    ( example.com/.certification/ninsyou.file ) と仮定。

問題点

何も考えずにドメイン配下(今回の例では root/.certification)にファイルを設置しただけでは、404エラーになりファイルにアクセスできない。

404エラーになる例

root
 └ .certification
   └ ninsyou.file

解決方法

下記2種類の方法で解決可能。わかりやすいのは(1)で、環境依存しにくいのは(2)。
どちらか好きな方でOKです。

  • 【 解決パターン1 】 railsのpublic配下に設置する。
  • 【 解決パターン2 】 root配下に設置後、publicからシンボリックリンクで接続する。

それぞれの詳細↓

【解決パターン1】 railsのpublic配下に設置する

Railsの app/public/ 配下に静的ファイルとして設置することで、アクセスできる。

app
  └ public
    └ .certification
      └ ninsyou.file

これで、 example.com/.certification/ninsyou.file にアクセスできます!

【解決パターン2】 root配下に設置後、publicからシンボリックリンクで接続する

railsに依存させたくない場合は、root配下に設置した後、railsのpublicからシンボリックリンクで接続してもOK。

(1) root配下に設置

root
 └ .certification
   └ ninsyou.file

(2) railsアプリケーション(ここではmyappと仮定)の、appディレクトリへ移動

$ cd root/myapp/app

(3) シンボリックリンクで、public/.certification を root/.certification に接続する。

$ ln -s /root/.certification ./public/.certification

以上で、 example.com/.certification/ninsyou.file にアクセスできます!

まとめ

ドメイン所有者の認証方法は複数用意されていることがほとんどですが、ファイル認証しかない案件に当たったので、忘備録としてまとめました。

普通に考えれば静的ファイルはpublicに設置したらOKなんですが、
何故かテンパって 『 ドメイン認証ファイル rails 』 とかでググって、若干沼ってしまったので。。。

どなたかの助けになれば幸いです!

解決のお役に立てたようでしたら、イイネを押していただけますとモチベアップにつながります。
よろしくお願いします。

Discussion