Tags:
Forums: 

ขอรบกวน ท่านใด เคยใช้ Azure Virtual Machine บ้างครับขอความรู้หน่อยครับ
ผมติดปัญหา เรื่อง เรียก https ไม่ได้

1 ผมติดตั้ง Glassfish4 บน Azure Sever Windows 2019 ได้ทำติดตั้ง SSL บน Glassfish4 เรียบร้อยแล้ว Server เปิด Port 443 เรียบร้อยแล้ว

2 Portal ของ Azure เปิด Port 443 เรียบร้อยแล้ว
ติดปัญหา เวลา เรียก https://api.xxxxxxs.com เรียกไม่ได้ครับ

ปกติ ทำกับ Server ที่ไม่ใช่ Azure จะสามารถเรียกได้ ไม่มีปัญหาอะไร
เลยรบกวน พอจะทราบมั้ยครับว่า ฝั่งหน้า Portal ของ Azure จะต้องเปิดอะไรเพิ่มหรือไม่ครับ

ขอบคุณมากครับ

Get latest news from Blognone
By: BlackMiracle
WriterAndroidUbuntuWindows
on 7 May 2021 - 18:07 #1208338

ต้องเช็คหลายจุดครับ

  1. Public IP ที่เอาไป associate กับ Network interface ของ VM ตั้งไว้เป็น static IP หรือยัง ไม่งั้นชื่อ https://api.xxxxxxs.com ก็อาจจะ resolve ไปผิด IP ครับ แต่การใช้ static IP จะแพงขึ้นนิดหน่อย ถ้าไม่อยากจ่ายแล้วไม่จำเป็นต้องใช้ static IP ก็ตั้ง DNS name label เอาได้ครับ จะได้ชื่อ FQDN ว่า xxxxxx.southeastasia.cloudapp.azure.com แล้ว map DNS เข้ากับ FQDN แทน
  2. ที่บอกว่า Azure Portal เปิด 443 ไว้แล้ว อันนี้หมายถึง inbound rule ของ NSG ที่ associate อยู่กับ Network interface ของ VM เครื่องนั้นใช่ไหมครับ ถ้าใช่ก็ต้องให้ชัวร์ว่า rule ตั้งไว้ถูกรึเปล่า พวก Source ถูกไหม / Destination ใช่ VM เครื่องที่ต้องการจริงๆ ไหม
  3. ลองปิด Windows Firewall ดูครับ ผมเคยเซ็ต FTPS server นี่ทุกอย่างภายนอกถูกต้องแน่ๆ ไปดู Windows Firewall rule ก็เปิดแล้ว แต่ connect เข้าไม่ได้ พอปิด Windows Firewall แล้วใช้ได้เลย (อันนี้แล้วแต่ policy ของบริษัทว่าอนุญาตหรือไม่นะครับ พอดีของผมทำขึ้นมาเล่นๆ เลยไม่ได้ซีเรียสมาก)
  4. ใน Portal จะมี Connection troubleshoot ลองใช้ดูได้ครับว่าผ่านไหม กดเข้าไปที่หน้า VM ของเราแล้วอยู่ล่างสุดในเมนูซ้ายมือ

Pitawat's Blog :: บล็อกผมเองครับ

By: tryask on 10 May 2021 - 10:54 #1208462 Reply to:1208338

1 ตอนนี้ เป็น Public IP แล้วครับ ถ้าเรียก http://api.xxxxxxx.com เรียกได้ครับ

2 Azure Portal เปิด 443 ไว้แล้ว อันนี้หมายถึง Inbound port rules ของ NSG ที่ associate
อยู่กับ Network interface ของ VM อันนี้ถูกต้องครับ

3 ยังไม่ได้ลองปิด Windows Firewall ครับ

ขอบคุณมากครับ ที่ให้คำแนะนำที่เป็นประโยชน์ เดี๋ยวจะลอง ปิด Windows Firewall ดูครับ

ลองปิด Windows Firewall แล้วครับ ยังเรียกไม่ได้ครับ

By: tryask on 9 May 2021 - 14:22 #1208416

-

By: ZiiT
ContributorAndroidWindows
on 9 May 2021 - 18:56 #1208471

ลองพยายามจำกัด scope ว่าเป็นที่เครื่องหรือว่าเป็นที่ Network ครับ

อาจจะลองทดสอบเรียกจากบนเครื่องเอง ว่า HTTP Port 80 ใช่งานได้หรือไม่ HTTPS 443 ใช้งานได้หรือไม่ Certificate Trusted รึเปล่า ถ้าทำงานได้ แปลว่าตัวเครื่องน่าจะเซ็ตถูก

แล้วลองขยับไปทดสอบจากเครื่องใน VNet เดียวกัน ถ้าไมีมีก็ขยับมาทดสอบจาก Public เน้นไปที่ NSG/Firewall ลองทดสอบทั้ง 80/443 ว่ามีพฤติกรรมเหมือนกันหรือไม่ แล้วค่อยแก้ไปทีละจุดครับ ถ้าเครื่องยังไม่มี Sensitive data อาจจะทดสอบ Allow All ไปชั่วคราว เพื่อ identify ว่าปัญหาเกี่ยวข้องกับจุดนั้นๆหรือไม่ รวมถึงพวก Antivirus บนเครื่องด้วยเช่นกันครับ

อีกอย่างคือ ลองสังเกตุ Error ด้วยก็ดีครับ ว่าเวลาใช้งานไม่ได้นั้นเป็นพวก DNS (พวก Name cannot be resolved) หรือ Firewall (พวก Timeout)

สุดท้ายเสร็จแล้วแนะนำให้ปิด port 80 ไว้ครับ หรือไม่ก็ทำ Redirect ไป HTTPS

By: tryask on 10 May 2021 - 12:10 #1208520 Reply to:1208471

ขอบคุณ คำแนะนำที่มีประโยชน์ ผมได้ scope ว่าเป็นที่เครื่องหรือว่าเป็นที่ Network ครับ

ลองทดสอบแบบ http://localhost:8080

พบว่า น่าจะเป็นปัญหา ของฝั่ง Server ครับ

ตามที่ โพสต์ ด้านล่างครับ
ขอบคุณมากนะครับ

By: tryask on 10 May 2021 - 14:30 #1208519

ผมได้ลองทำตามคำแนะนำ จะแยกว่า มีปัญหาส่วนใด

ติดตั้ง Glassfish4 Port 8080 ติดตั้ง SSL Port 443
Server 2 ตัวนี้จะ Setup เหมือนกัน

ผมทดสอบกับ Server1
ทดสอบเรียก แบบ http://localhost:8080
จะเข้าหน้าแรกของ Glassfish4
ถ้าเรียกแบบ https://localhost/
จะแจ้ง Warning: Potential Security Risk Ahead
อันนี้คือ ปกติ

คราวนี้ มาทดสอบที่ Server2 (Azure Virtual Machine)
แบบ http://localhost:8080
จะเข้าหน้าแรกของ Glassfish4
ถ้าเรียกแบบ https://localhost/
แจ้ง Secure Connection Failed
แสดงว่า ตอนนี้ คงมีปัญหา ที่ตัว Server2 ใช่มั้ยครับ

ปกติ Server ผมก็เปิด Port 443
ก็ใช้ได้แล้ว แต่ Server2 นี้ เปิดแล้วก็ยังใช้ไม่ได้

ถ้าเปิด Port 443 แล้วยังใช้ไม่ได้ จะต้องมีอะไรเพิ่มเติมอีกหรือเปล่าครับ

ขอบคุณมากครับ

By: ZiiT
ContributorAndroidWindows
on 10 May 2021 - 15:11 #1208549 Reply to:1208519

คิดว่าเป็นที่ตัว Server 2 เองครับ อาจจะต้องไล่ดูการตั้งค่าของ TLS Certificate ครับ เพราะถ้า Port 8080 ใช้งานได้ แปลว่าตัว Glassfish เองทำงานได้แล้ว

ไม่แน่ใจว่าตัว Certificate สำหรับทำ HTTPS (TLS) เอามาจากไหนครับ เป็น Self signed, ใช้ Let's Encrypt หรือว่าซื้อมา ลองดูว่าพวก Subject name ตั้งถูกใหม่ (อาจจะลองดูว่าระหว่างเข้าเว็บด้วย https://localhost กับ https://{machine-name} ให้ผลแตกต่างกันหรือไม่ครับ

By: tryask on 11 May 2021 - 10:18 #1208613 Reply to:1208549

พบปัญหาแล้วครับ
เป็นความผิดพลาดของ ผู้ให้บริการ SSL แจ้งชื่อของ Certificate NickName: ของ Glassfish ผิดครับ
จริงแล้วทุกอย่าง เรื่อง Server เปิด Port 443 เรื่อง Portal ของ Azure เปิด Port 443 ทุกอย่างทำถูกต้องแล้ว

แค่เรื่อง Certificate NickName:ผิดเท่านั้นเอง ทำให้วุ่นวายเลย
จริงแล้ว ตอน config ผมได้ถามย้ำไปแล้วว่า ชื่อ NickName ถูกต้องไหม เขาแจ้งมาถูกต้องแล้ว
ผมก็เลยต้องเช็คเรื่อง Server เลยไปกันใหญ่

ขอบคุณ ทุกท่านนะครับ ที่ให้ความช่วยเหลือ ที่เป็นประโยชน์ทำให้แก้ไขได้ ขอบคนทุกท่านครับ