🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

Q&A

解決済

2回答

1003閲覧

httpsでrailsアプリにアクセスできない

garta

総合スコア15

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

0グッド

0クリップ

投稿2019/12/27 23:47

編集2019/12/29 06:07

###実現したいこと
開発環境として使用しているMacからhttpsで本番環境のrailsアプリにアクセスできるようにしたい

###環境
rails6,ec2-amazon_linux2(nginx puma),capistranoを使用しています。
証明書はACM、ドメインはroute53で取得しています。
私物のwindows(chrome),iphone(safari),他人のiphone(safari)からは正常にhttpsアクセスできます。
自身が開発環境として使用しているMac(Mojave10.14.6)からのみ、chrome,firefox共にアクセスできません。
キャッシュ(OSキャッシュ含む)やクッキーを削除しても同様です。
production.rbのconfig_force_sslはtrueです。
nginx,pumaのログにエラーは出力されていません。
以下にエラー状況や設定ファイルなど添付いたしますので、
アドバイスいただければ幸いです。
必要な情報がありましたら追記させていただきます。

###Macからアクセスした結果
このサイトは安全に接続できません
(ドメイン)から無効な応答が送信されました。
ERR_SSL_PROTOCOL_ERROR

###ALB
HTTP 80
HTTPS 443 証明書紐付け済み
###nginx.conf

user nginx; worker_processes auto; error_log /var/www/rails/myapp/shared/log/nginx.error.log warn; pid /var/run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/www/rails/myapp/shared/log/nginx.access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; gzip on; gzip_types text/css text/javascript application/javascript image/svg+xml; #include /etc/nginx/conf.d/*.conf; index index.html index.htm; upstream puma { server unix:///var/www/rails/myapp/shared/tmp/sockets/puma.sock; } server { listen 80 default_server; listen [::]:80 default_server; location / { access_log off; return 200 OK; } } server { listen 80; listen 443; listen [::]:80; server_name myapp.com; root /var/www/rails/myapp/current/public; include /etc/nginx/default.d/*.conf; location ~* .(html|jpeg|jpg|gif|png|css|js|ico|woff|svg)$ { access_log off; expires 7d; break; } location ~ ^/assets/ { root /var/www/rails/myapp/shared/public; } location / { try_files $uri $uri/index.html $uri.html @webapp; } location @webapp { proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; if ($http_x_forwarded_proto = http) { return 301 https://$host$request_uri; } proxy_pass http://puma; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }

###sudo netstat -tlnp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2687/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12870/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3271/sshd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 12870/nginx: master
tcp6 0 0 :::3306 :::* LISTEN 3076/mysqld
tcp6 0 0 :::111 :::* LISTEN 2687/rpcbind
tcp6 0 0 :::80 :::* LISTEN 12870/nginx: master
tcp6 0 0 :::22 :::* LISTEN 3271/sshd

###curl
EC2からsudo curl -v https://ドメイン

  • Rebuilt URL to: https://myapp.com/
  • Trying 1.2.3.4...(EIPではない)
  • TCP_NODELAY set
  • Connected to myapp.com (1.2.3.4) port 443 (#0)

成功

Macからsudo curl -v https://ドメイン

  • Rebuilt URL to: https://myapp.com/
  • Trying (インスタンスのEIP)...
  • TCP_NODELAY set
  • Connection failed
  • connect to (インスタンスのEIP) port 443 failed: Connection refused
  • Failed to connect to myapp.com port 443: Connection refused
  • Closing connection 0

curl: (7) Failed to connect to myapp.com port 443: Connection refused

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2019/12/28 00:19

「ドメイン」 は example.com の様な Zone Apex ドメインというのかな、それですかそれとも sub.example.com の様なサブドメインですか?
yu_1985

2019/12/28 18:11

ターゲットグループの設定はどうなっていますか? ALBにACMで発行した証明書を紐付けているのなら、そこでSSL終端させてしまえば配下のインスタンスで443ポートを使用する必要はないかと思いますが…。
garta

2019/12/29 06:07 編集

>>winterboumさん example.comといったドメインです。 サブドメインは現状取得していません。 >>yu_1985さん ターゲットグループは使用中のvpc、ALBと紐づけて、port80のhttpで設定しています。 443ポートの使用ですが、 自分で色々試していたのがそのままになってしまっていました。 おっしゃる通りSSL終端はALBのため、listen443を削除しました。 ご指摘ありがとうございます。失礼いたしました。 削除後も同様に私物のMacからのみアクセスできず、 DNSキャッシュクリアなども試してみましたが同様です。 お二方とも年末の忙しい時期にほんとうにありがとうございます。。。 追記:curl結果の記述変更をしました
guest

回答2

0

サブドメインでない場合は特別な設定が必要です
ここの
Q:Elastic Load Balancing で Zone Apex (www.example.com ではなく example.com) を指定できますか?
を参照してください

投稿2019/12/29 08:05

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

garta

2019/12/29 17:13

帰宅しました、遅くなり申し訳ありません 回答ありがとうございます。 route53のAレコードにエイリアスを設定するということでしょうか? すでにzoneapexで指定したAレコードはALBをエイリアス先に指定したものとなっています。
guest

0

自己解決

curl結果がMacからのみALBを通さずEC2のEIPに直接アクセスしてしまっていたため、
Macの/private/etc/hostsをみたところ
EIP myapp.comと記述があり、
削除したところ正常に動作しました。
自分でもいつ書いたかわからないのですが、なぜ書くか、書くとどうなるかという考えが足りなかったと反省します。
皆さんのアドバイスで新しい知識も得ることができました。
アドバイスくださった方々本当にありがとうございました。
また、winterboumさんには毎回お世話になっており非常に感謝しています。
良いお年をお過ごしください。

投稿2019/12/29 17:41

編集2019/12/29 17:50
garta

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問