การติดตั้ง Shibboleth Single Sign-On
ตอนที่ 4 - ติดตั้ง Tomcat และ SSL

6. ติดตั้ง Tomcat

ก็อปปีโฟลเดอร์ apache-tomcat-6.0.18 จากในโฟลเดอร์ c:\sso\setup ออกมาวางไว้ที่ c:\sso เช่นนี้

รูปภาพ 26 ก็อปปี tomcat มาวางไว้ใน c:\sso
ให้ดับเบิลคลิกไฟล์ startup.bat ที่อยู่ในโฟลเดอร์ c:\sso\apache-tomcat-6.0.18\bin เพื่อรัน Tomcat

รูปภาพ 27 รัน Tomcat ค้างไว้
เบราซ์ไปที่ URL http://localhost:8080 ควรจะปรากฏหน้าโฮมเพจของ Tomcat ดังนี้

รูปภาพ 28 เบราซ์ไปที่ http://localhost:8080
หมายเหตุ หาก Tomcat ของท่านมีปัญหาไม่สามารถสตาทร์ขึ้นได้เนื่องจากมีการคอนฟิกผิดพลาดค้างไว้ หรือมีแอพพลิเคชันที่ผิดพลาดติดตั้งไว้ให้ไปดาวน์โหลด Tomcat ตัวใหม่มาจากเว็บไซต์ http://jakarta.apache.org/tomcat เพื่อใช้กับการทดลองนี้

7. ทำให้ Tomcat ใช้งาน SSL ได้

เนื่องจาก Shibboleth จะรับส่งข้อมูลสำคัญไปกับการสื่อสารแบบ SSL (Secure Socket Layer) หรือ TLS (Transport Layer Secure) เท่านั้น ดังนั้นเพื่อให้สามารถทำงานได้อย่างสมบูรณ์ เราจำเป็นต้องกำหนดค่าเริ่มต้นให้กับระบบ Tomcat สามารถใช้งาน SSL ได้อย่างถูกต้องด้วย

7.1 ตรวจสอบ Keystore ของ IdP

เมื่อติดตั้ง IdP เสร็จแล้วไฟล์ที่เป็นคีย์จะเก็บอยู่ที่โฟลเดอร์ c:\sso\shibboleth-idp\credentials ดังนี้

รูปภาพ 29 ที่เก็บ X509 Certificate และ Private Key ของ Shibboleth IdP
เราจำเป็นต้องกำหนดค่าคอนฟิกของ Tomcat ให้มาใช้ไฟล์เหล่านี้เพื่อนำไปทำเป็นการสื่อสารแบบ SSL

7.2 แก้ไขไฟล์ server.xml

เปิดไฟล์ server.xml ที่ตำแหน่ง c:\sso\apahce-tomcat-6.0.18\conf แล้วแก้ไขเนื้อหาดังนี้
ซอร์สโค้ด 1 บางส่วนของไฟล์ server.xml ที่ถูกแก้ไข (เปิดคอมเมนต์พอร์ต 8443 และเพิ่ม keystore
76
    -->           
77
        <!-- Define a SSL HTTP/1.1 Connector on port 8443
78
         This connector uses the JSSE configuration, when using APR, the 
79
         connector should be using the OpenSSL style configuration
80
         described in the APR documentation -->
81

82
        <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
83
               maxThreads="150" scheme="https" secure="true"
84
               clientAuth="false" sslProtocol="TLS"
85
               keystoreFile="c:/sso/shibboleth-idp/credentials/idp.jks"
86
               keystorePass="password" keyAlias="127.0.0.1"/>
87

88
        <!-- Define an AJP 1.3 Connector on port 8009 -->
89
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
90

91

ให้สังเกตว่าเราเพิ่มแอททริบิวท์เข้าไปที่ Connector ของพอร์ต 8443 สามตัวคือ keystoreFile, keystorePass และ keyAlias โดย keyAlias เป็นชื่อเครื่องตรงกับที่เรากำหนดให้ขณะที่ติดตั้ง IdP
บันทึกไฟล์ server.xml ไว้แล้วรีสตาทร์ Tomcat ใหม่อีกครั้ง หลังจากนั้นเบราซ์ไปที่ https://localhost:8443 ควรจะปรากฏผลลัพธ์ดังนี้

รูปภาพ 30 ปรากฏไดอะล็อกซ์ Security Alert เมื่อเบราซ์ไปที่ https://localhost:8443
คลิกปุ่ม View Certificate จะปรากฏรายละเอียดของใบรับรองอิเล็คทรอนิกส์ X509 ดังนี้

รูปภาพ 31 รายละเอียดของ X509 Certificate ปรากฏเป็น 127.0.0.1
ปิดหน้าต่าง Certificate แล้วคลิกปุ่ม Yes เข้าสู่หน้าโฮมเพจของ Tomcat แบบ https ดังนี้

รูปภาพ 32 สังเกตจุดที่บ่งบอกว่าเป็น SSL ได้ที่ https และไอคอนแม่กุญแจด้านล่าง

8. ติดตั้ง IdP กับ Tomcat

วิธีการติดตั้ง IdP กับ Tomcat จะต้องนำไฟล์ idp.war ไปดีพลอย (Deploy) ดังนั้นให้ก็อปปีไฟล์ idp.war จากโฟลเดอร์ c:\sso\shibboleth-idp\war ไปวางไว้ที่ c:\sso\apache-tomcat-6.0.18\webapps

รูปภาพ 33 ก็อปปีไฟล์ idp.war มาวางไว้ที่ webapps ของ Tomcat
และรอสักครู่ ที่หน้าต่างคอนโซลจะปรากฏข้อความดังนี้

รูปภาพ 34 เมื่อนำมาดีพลอยกับ JDK 1.6 จะเกิด Error
เมื่อดีพลอยครั้งแรกจะเกิดข้อผิดพลาดเนื่องจาก IdP ไม่พบ SAX Parser ที่จะใช้งาน

8.1 เติม SAX Parser ให้กับ IdP บน Tomcat

ก็อปปีไฟล์ jar ทุกไฟล์ในโฟลเดอร์ c:\sso\shibboleth-idp\lib\endorsed

รูปภาพ 35 ไฟล์ jar ที่ต้องก็อปปีไปเติมที่โฟลเดอร์ webapps\idp\WEB-INF\lib
ก็อปปีไฟล์ jar ทุกไฟล์ในโฟลเดอร์ endorsed ไปวางไว้ที่ c:\sso\apache-tomcat-6.0.18\webapps\idp\WEB-INF\lib แล้วรีสตาทร์ Tomcat ใหม่อีกครั้ง

รูปภาพ 36 หลังจากเติมไฟล์ jar ที่จำเป็นแล้วสามารถสตาทร์ Tomcat และ IdP ได้โดยไม่มีแจ้งข้อผิดพลาด
ให้ทดลองเบราซ์ไปที่ https://localhost:8443/idp/login.jsp ควรจะปรากฏภาพดังนี้

รูปภาพ 37 สามารถเปิดหน้าล็อกอินของ IdP ได้แสดงว่า IdP ที่ติดตั้งไว้กับ Tomcat ทำงานได้ตามปกติ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การติดตั้ง Shibboleth Single Sign-On
ตอนที่ 12 - การทำ SLO (Single Log-out)

ตัวอย่างการเข้ารหัส AES ด้วย Java และถอดรหัสด้วย C#.NET

การรักษาความปลอดภัยแบบ OWASP