##前提・実現したいこと
使用技術
Rails6.0.3
Ruby 2.6.3p62
ssl化に使用したもの
AWSのroute53、cloudfront、ACM。(ドメイン取得はお名前.comでしました)
##発生している問題・エラーメッセージ
ec2サーバー上でsudo tail -f log/production.logを実行した結果です
[2021-11-05T10:59:55.382974 #26331] INFO -- : [7eaa855a-d931-49c3-b054-d772430cb012] Started POST "/login" for パブリックIP at 2021-11-05 10:59:55 +0000 I, [2021-11-05T10:59:55.383723 #26331] INFO -- : [7eaa855a-d931-49c3-b054-d772430cb012] Processing by EndUsers::SessionsController#create as HTML I, [2021-11-05T10:59:55.383786 #26331] INFO -- : [7eaa855a-d931-49c3-b054-d772430cb012] Parameters: {"authenticity_token"=>"KZk67TJY3G5uc2roWdFCayDQyTexreCGolxxuYBg/9H8tXN7aGu9Nbzvg0eVqrSgMstcoAbq3pE4D51vKI2paw==", "session"=>{"name"=>"", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"ログイン"} W, [2021-11-05T10:59:55.383916 #26331] WARN -- : [7eaa855a-d931-49c3-b054-d772430cb012] HTTP Origin header (https://略) didn't match request.base_url (http://略) I, [2021-11-05T10:59:55.384150 #26331] INFO -- : [7eaa855a-d931-49c3-b054-d772430cb012] Completed 422 Unprocessable Entity in 0ms (ActiveRecord: 0.0ms | Allocations: 115) F, [2021-11-05T10:59:55.384805 #26331] FATAL -- : [7eaa855a-d931-49c3-b054-d772430cb012] [7eaa855a-d931-49c3-b054-d772430cb012] ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken): [7eaa855a-d931-49c3-b054-d772430cb012] [7eaa855a-d931-49c3-b054-d772430cb012] actionpack (6.0.3) lib/action_controller/metal/request_forgery_protection.rb:215:in 以下省略
##該当のソースコード
sudo vi /etc/nginx/nginx.confを実行した結果です
nginx
1・・・ここまで省略 2server { 3 listen 80; 4 listen [::]:80; 5 server_name _; 6 root /usr/share/nginx/html; 7 8 # Load configuration files for the default server block. 9 include /etc/nginx/default.d/*.conf; 10 11 error_page 404 /404.html; 12 location = /404.html { 13 } 14 15 error_page 500 502 503 504 /50x.html; 16 location = /50x.html { 17 } 18 } 19 20# Settings for a TLS enabled server. 21# 22# server { 23# listen 443 ssl http2; 24# listen [::]:443 ssl http2; 25# server_name _; 26# root /usr/share/nginx/html; 27# ssl on; 28# ssl_certificate "/etc/pki/nginx/server.crt"; 29# ssl_certificate_key "/etc/pki/nginx/private/server.key"; 30# ssl_session_cache shared:SSL:1m; 31# ssl_session_timeout 10m; 32# ssl_ciphers PROFILE=SYSTEM; 33# ssl_prefer_server_ciphers on; 34# 35# # Load configuration files for the default server block. 36# include /etc/nginx/default.d/*.conf; 37# 38# error_page 404 /404.html; 39# location = /40x.html { 40# } 41# 42# error_page 500 502 503 504 /50x.html; 43# location = /50x.html { 44# } 45# } 46 47}
config/puma.rb
# Puma can serve each request in a thread from an internal thread pool. # The `threads` method setting takes two numbers: a minimum and maximum. # Any libraries that use thread pools should be configured to match # the maximum value specified for Puma. Default is set to 5 threads for minimum # and maximum; this matches the default thread size of Active Record. # max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } threads min_threads_count, max_threads_count # Specifies the `port` that Puma will listen on to receive requests; default is 3000. # port ENV.fetch("PORT") { 3000 } # Specifies the `environment` that Puma will run in. # environment ENV.fetch("RAILS_ENV") { "development" } # Specifies the `pidfile` that Puma will use. pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } # Specifies the number of `workers` to boot in clustered mode. # Workers are forked web server processes. If using threads and workers together # the concurrency of the application would be max `threads` * `workers`. # Workers do not work on JRuby or Windows (both of which do not support # processes). # # workers ENV.fetch("WEB_CONCURRENCY") { 2 } # Use the `preload_app!` method when specifying a `workers` number. # This directive tells Puma to first boot the application and load code # before forking the application. This takes advantage of Copy On Write # process behavior so workers use less memory. # # preload_app! # Allow puma to be restarted by `rails restart` command. plugin :tmp_restart bind "unix://#{Rails.root}/tmp/sockets/puma.sock" rails_root = Dir.pwd # 本番環境のみデーモン起動 if Rails.env.production? pidfile File.join(rails_root, 'tmp', 'pids', 'puma.pid') state_path File.join(rails_root, 'tmp', 'pids', 'puma.state') stdout_redirect( File.join(rails_root, 'log', 'puma.log'), File.join(rails_root, 'log', 'puma-error.log'), true ) # デーモン daemonize end
##試したこと
まずssl化を実装するためにやったことは以下です
・まずドメインを外部で手に入れる。(私はお名前.comを使用した)
・Route53でホストゾーンを作成。
・ネームサーバーを設定。
・ACMで証明書を発行する(バージニア北部で行った)
・Cloudfrontでディストリビューションを作成。
→オリジンドメインはEC2のパブリックIPv4DNSを貼り付けました。
・Route53の設定を変更(typeAでレコードセットを作成、エイリアスを”はい”にCloudfrontで作ったディストリビューションを選択)
上記を設定した上でアプリケーションを確認したところ、トップページやサインアップページ、ログインページはssl化に成功してうまく表示することができたのですが、実際にユーザー登録や、ログインのボタンを押すと上記のようなエラーコードが出てしまいます。
いろいろ調べてCSRFが関係しているなどの記事もありましたが少々自分のもとで発生しているものと異なっていてうまく解決ができなかったので質問させていただきました。サーバー周りの設定や、Route53の設定あたりが知識的に弱く質問が的を得ていないかもしれませんがご容赦ください。
回答1件
あなたの回答
tips
プレビュー