Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AWSとDockerを利用したシステムのセットアップにて躓きます #508

Closed
TakashiNaito opened this issue Jun 2, 2019 · 10 comments

Comments

@TakashiNaito
Copy link

#324 #175 を参照させていただきましたが解決に至らなかったので質問させていただきます。

こちらのページを参考に設定を行っているのですが、
URLにてアクセスの部分で躓いております。ブラウザ上で表示できません。

上記2つを参考に切り分けて見たのですが、原因がわからず
対処方法をご教授願いたいです。

状況

  • ポート443,80ともに接続できない
  • localhostでCurlはできる
  • Logに存在するエラーはjiji_jijiでの初期認証のみ
  • AWSで別のEC2立てて、nginx入れてみたら、ブラウザ上で表示できた。

conposeの設定ファイル

[root@ip-172-31-86-250 docker-jiji2]# cat docker-compose.yml
jiji:
  container_name: jiji_jiji
  image: unageanu/jiji:latest
  links:
    - mongodb
  environment:
    # サーバー内部で秘匿データの暗号化に使うキー
    # 必ず変更して使用してください。
    # UIから入力を求められることはないので、任意の長い文字列を使用すればOKです。
    USER_SECRET: e4cceb3791f2cce9ef6e4f64d2428ad19bdb

mongodb:
  container_name: jiji_mongodb
  image: mongo:3.0.7
  ports:
    # MongoDBのポート番号
    # 必要に応じて変更してください。
    - "27018:27017"
  # volumes:
    # MongoDBのデータを保存するディレクトリ
    # デフォルトでは、コンテナ内に作成します。(この場合、コンテナを再作成すると、データが初期化されます)
    # コメントアウトしてパスを設定することで、ホストマシンの任意のディレクトリに変更することができます。
    # './' で始めることで、docker-compose.ymlからの相対パスで指定可能です。
    # - ./path/to/data/dir:/data/db

nginx:
  container_name: jiji_nginx
  image: unageanu/jiji-nginx:latest
  links:
    - jiji
  ports:
    # Jijiのポート番号
    # 必要に応じて変更してください。
    - "8443:443"
  volumes:
    # SSL証明書のパス
    # './path/to/server.crt' にサーバー証明書、
    # './path/to/server.key' に秘密鍵を指定します。
    # './' で始めることで、docker-compose.ymlからの相対パスで指定可能です。
    - ./path/to/server.crt:/etc/nginx/cert/ssl.crt:ro
    - ./path/to/server.key:/etc/nginx/cert/ssl.key:ro
[root@ip-172-31-86-250 docker-jiji2]#

port

[root@ip-172-31-86-250 docker-jiji2]# lsof -i:80
[root@ip-172-31-86-250 docker-jiji2]# lsof -i:443
[root@ip-172-31-86-250 docker-jiji2]# lsof -i:8443
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 15565 root    4u  IPv6  57054      0t0  TCP *:pcsync-https (LISTEN)
[root@ip-172-31-86-250 docker-jiji2]# lsof -i:8080
[root@ip-172-31-86-250 docker-jiji2]#

Curl

[root@ip-172-31-86-250 docker-jiji2]# docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                           NAMES
7d6e98e3c780        unageanu/jiji-nginx:latest   "nginx -g 'daemon of…"   17 minutes ago      Up 14 minutes       80/tcp, 0.0.0.0:8443->443/tcp   jiji_nginx
8ea497ef9ba5        unageanu/jiji:latest         "puma -C /app/jiji2/…"   17 minutes ago      Up 14 minutes       8080/tcp                        jiji_jiji
45770f817ba6        mongo:3.0.7                  "/entrypoint.sh mong…"   21 minutes ago      Up 14 minutes       0.0.0.0:27018->27017/tcp        jiji_mongodb
[root@ip-172-31-86-250 docker-jiji2]# docker exec -it jiji_jiji bash
root@8ea497ef9ba5:/# wget http://localhost:8080
--2019-06-02 00:47:02--  http://localhost:8080/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://localhost:8080/static/html/index.html [following]
--2019-06-02 00:47:02--  http://localhost:8080/static/html/index.html
Reusing existing connection to localhost:8080.
HTTP request sent, awaiting response... 200 OK
Length: 683 [text/html]
Saving to: 'index.html'

index.html                                100%[=====================================================================================>]     683  --.-KB/s    in 0s

2019-06-02 00:47:02 (115 MB/s) - 'index.html' saved [683/683]

root@8ea497ef9ba5:/#
root@8ea497ef9ba5:/# cat index.html
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=format-detection content="telephone=no"><meta name=msapplication-tap-highlight content=no><meta name=viewport content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi"><link rel=stylesheet type=text/css href=../css/main.css><link rel="shortcut icon" href=../images/favicon.ico type=image/vnd.microsoft.icon><link rel=icon href=../images/favicon.ico type=image/vnd.microsoft.icon><title>FX システムトレードフレームワーク「Jiji」</title></head><body><div id=main></div><script src=../js/main.js></script></body></html>root@8ea497ef9ba5:/#
@unageanu
Copy link
Owner

unageanu commented Jun 2, 2019

Curl のログを見る限り、Jiji の起動自体は成功しているようですね。
root@ip-172-31-86-250 から wget https://localhost:8443 を実行した場合は、どのようなレスポンスが返されますでしょうか?

@TakashiNaito
Copy link
Author

以下のように接続できないです。

[root@ip-172-31-86-250 ec2-user]# wget https://localhost:8443
--2019-06-03 21:21:29--  https://localhost:8443/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8443... connected.
ERROR: cannot verify localhost's certificate, issued by ‘O=Default Company Ltd,L=Default City,C=XX’:
  Self-signed certificate encountered.
    ERROR: certificate common name ‘’ doesn't match requested host name ‘localhost’.
To connect to localhost insecurely, use `--no-check-certificate'.

nginx自体は動いてるんですが

[root@ip-172-31-86-250 ec2-user]# docker exec -it jiji_nginx bash


root@7d6e98e3c780:/# service nginx status
[ ok ] nginx is running.
root@7d6e98e3c780:/#

@unageanu
Copy link
Owner

unageanu commented Jun 3, 2019

エラーを見たところ、SSL証明書が正しく作成できていないようです。
Common Nameの設定がアクセス時に指定しているホスト名と一致していないといわれています。おそらく自己署名証明書を利用されていると思うので、Common Name に実際に利用するドメイン名を設定したうえで、https://<Common Nameで指定したドメイン名>:8443 にアクセスした場合はどうなりますでしょうか?

@TakashiNaito
Copy link
Author

TakashiNaito commented Jun 5, 2019

Common Nameで試したんですが同じエラーが出ました。

[ec2-user@ip-172-31-86-250 docker-jiji2]$ wget https://localhost:8443
--2019-06-05 02:21:02--  https://localhost:8443/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8443... connected.
ERROR: cannot verify localhost's certificate, issued by ‘CN=website.jiji-naito.tk,O=Default Company Ltd,L=Default City,C=JP’:
  Self-signed certificate encountered.
    ERROR: certificate common name ‘website.jiji-naito.tk’ doesn't match requested host name ‘localhost’.
To connect to localhost insecurely, use `--no-check-certificate'.
[ec2-user@ip-172-31-86-250 docker-jiji2]$
[ec2-user@ip-172-31-86-250 docker-jiji2]$ wget https://localhost:8443 --no-check-certificate
--2019-06-05 02:21:54--  https://localhost:8443/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8443... connected.
WARNING: cannot verify localhost's certificate, issued by ‘CN=website.jiji-naito.tk,O=Default Company Ltd,L=Default City,C=JP’:
  Self-signed certificate encountered.
    WARNING: certificate common name ‘website.jiji-naito.tk’ doesn't match requested host name ‘localhost’.
HTTP request sent, awaiting response... 302 Found
Location: https://localhost:8443/static/html/index.html [following]
--2019-06-05 02:21:54--  https://localhost:8443/static/html/index.html
Reusing existing connection to localhost:8443.
HTTP request sent, awaiting response... 200 OK
Length: 683 [text/html]
Saving to: ‘index.html’

index.html                                                  100%[========================================================================================================================================>]     683  --.-KB/s    in 0s

2019-06-05 02:21:54 (115 MB/s) - ‘index.html’ saved [683/683]

--no-check-certificate つけると正常に動くので、SSL証明書の設定について教えてください。
以下のように設定したのですが、問題ないでしょうか。
ドメインは自分で取得しました。

[ec2-user@ip-172-31-86-250 docker-jiji2]$ openssl req -new -key ssl.key > ssl.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
string is too long, it needs to be less than  2 bytes long
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:w******.jiji-naito.tk
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[ec2-user@ip-172-31-86-250 docker-jiji2]$

@unageanu
Copy link
Owner

unageanu commented Jun 5, 2019

はい、こちらの設定で問題ないと思います。
certificate common name ‘website.jiji-naito.tk’ doesn't match requested host name ‘localhost’.
になっているので、'https://website.jiji-naito.tk:8443' にアクセスしてみるとどうなりますでしょうか?
名前解決ができれば ip-172-31-86-250 からの wget でアクセスできそうに思います。また、ローカルのブラウザからもポートの開放等正しく行えていればいけそうな気がします。

@TakashiNaito
Copy link
Author

上手くいかないですね

1度、ローカル環境かSSLなしで試してみます

@unageanu
Copy link
Owner

unageanu commented Jun 7, 2019

上手くいかないですね

なるほど・・・。
可能ならそれぞれどのようなエラーになるか教えていただければ何かわかるかもしれません。

@TakashiNaito
Copy link
Author

ご回答有り難うございます。
SSL+AWS+Docker+Jijiの環境で以下試してみました。

ip-172-31-86-250 からの wget で https://website.jiji-naito.tk:8443 にアクセス

[ec2-user@ip-172-31-86-250 ~]$ wget -d https://website.jiji-naito.tk:8443
DEBUG output created by Wget 1.18 on linux-gnu.

Reading HSTS entries from /home/ec2-user/.wget-hsts
URI encoding = ‘UTF-8’
Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8)
--2019-06-07 10:22:47--  https://website.jiji-naito.tk:8443/
Resolving website.jiji-naito.tk (website.jiji-naito.tk)... 3.88.246.156
Caching website.jiji-naito.tk => 3.88.246.156
Connecting to website.jiji-naito.tk (website.jiji-naito.tk)|3.88.246.156|:8443...

ローカルのブラウザから https://website.jiji-naito.tk:8443 にアクセス

このサイトにアクセスできません website.jiji-naito.tk からの応答時間が長すぎます

@unageanu
Copy link
Owner

unageanu commented Jun 8, 2019

ご確認ありがとうございます。
この感じだと、nginxの外側で何らかの要因により弾かれている感じですね・・・・。OSのファイアウォールの設定等が可能性としてはありそうです。おっしゃる通りSSLなしで試してみる、あとはポートを8443に変更しているのでデフォルトで空いていそうな443に変更してみる、というのもありかもしれません。

@TakashiNaito
Copy link
Author

しばらく返事なく大変申し訳ございません。

上記の件、AWSのセキュリティグループの設定が原因でした。
正しいportを指定しましたら無事起動まで行けました。

これにてcloseいたします。ご対応いただきありがとうございました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants