בהתקנת ברירת מחדל של אפליקציית Looker נעשה שימוש באישורי SSL בחתימה עצמית עבור HTTPS. בסביבות ייצור של מופעי אירוח בצד הלקוח, מומלץ להתקין אישור SSL מספק מהימן.
כדי להשתמש באישור SSL עם Looker, צריך ליצור Java keystore עם האישור והמפתח.
צריכים להיות לכם הקבצים הבאים:
- קובץ אישור בשם
looker.pemשמכיל את האישור הראשי - קובץ מפתח משויך בשם
looker.key - אופציונלית, קובץ שרשרת של רשות אישורים (CA) ביניים בשם
ca.pem
הקובץ
.pemלא צריך להכיל אישור בסיס.
התקנת האישור
כל הקבצים האלה צריכים להיות באותה ספרייה. ערך ברירת המחדל הוא /home/looker/looker/.ssl.
יוצרים את הספרייה החדשה והופכים אותה לספרייה הנוכחית:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.sslבוחרים סיסמה למאגר המפתחות ומכניסים אותה לקובץ שנקרא
.keystorepass:echo "some_password_here" > .keystorepassאם יש לכם קובץ CA, מוסיפים אותו לסוף קובץ האישור:
echo >> looker.pem cat ca.pem >> looker.pemממירים את האישור והמפתח ל-
pkcs12keystore:openssl pkcs12 -export \ -in looker.pem \ -inkey looker.key \ -out importme.p12תתבקשו להזין סיסמה לייצוא. משתמשים בערך שהזנתם בקובץ
.keystorepass.ממירים את מאגר המפתחות pkcs12 למאגר מפתחות של Java:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1תתבקשו להזין את הסיסמה החדשה למאגר המפתחות ואת הסיסמה למאגר המפתחות pkcs12. להמשיך להשתמש בזה שבקובץ
.keystorepass.יוצרים קובץ בשם
lookerstart.cfgבאותה ספרייה שבה נמצא הקובץlooker.jar. הקובץ הזה יגדיר את האפשרויות הנדרשות ב-Looker בכל פעם ש-Looker יופעל. הקובץ צריך להכיל:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
אימות האישור
אחרי שמפעילים את Looker, אפשר לוודא שהאישור מותקן בצורה נכונה באמצעות OpenSSL s_client.
openssl s_client -connect localhost:9999
אם שם המארח הוא looker.yourdomain.com, אמורה להופיע בשורת הפלט שורה כזו:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
דרך נוספת לבדוק היא באמצעות wget. אפשר לבצע את הבדיקה הזו מכל מארח שיש לו גישה לרשת למופע Looker באמצעות HTTPS.
ב-Looker שבו נעשה שימוש באישור עם חתימה עצמית שמוגדר כברירת מחדל, הפלט מציג את השם המוכר של האישור self-signed.looker.com:
$ wget https://looker.yourdomain.com:9999
--2014-12-31 12:06:03-- https://looker.yourdomain.com:9999/
Resolving looker.yourdomain.com (looker.yourdomain.com)... 192.168.23.66
Connecting to looker.yourdomain.com (looker.yourdomain.com)|192.168.23.66|:9999... connected.
ERROR: cannot verify looker.yourdomain.com's certificate, issued by '/CN=self-signed.looker.com':
Self-signed certificate encountered.
ERROR: certificate common name 'self-signed.looker.com' doesn't match requested host name 'looker.yourdomain.com'.
To connect to looker.yourdomain.com insecurely, use `--no-check-certificate'.
ב-Looker שמשתמש בתעודה מרשות אישורים, השם הנפוץ של התעודה צריך להיות זהה לשם ה-DNS שבו הלקוחות משתמשים כדי לגשת ל-Looker (או לתעודת wildcard שוות ערך).
דוגמה לשרת שמשתמש באישור 'אמיתי' (לא בחתימה עצמית):
$ wget https://looker.yourdomain.com:9999
--2014-12-31 12:06:47-- https://looker.yourdomain.com:9999/
Resolving looker.yourdomain.com (looker.yourdomain.com)... 10.10.10.10
Connecting to looker.yourdomain.com (looker.yourdomain.com)|10.10.10.10|:9999... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://looker.yourdomain.com:9999/login [following]
--2014-12-31 12:06:48-- https://looker.yourdomain.com:9999/login
Connecting to looker.yourdomain.com (looker.yourdomain.com)|10.10.10.10|:9999... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3491 (3.4K) [text/html]
Saving to: 'index.html'
100%[====================================================>] 3,491 --.-K/s in 0.07s
2014-12-31 12:06:48 (50.5 KB/s) - 'index.html' saved [3491/3491]
אימות האישור של אתר מול חבילת ה-CA
החל מ-Looker 5.18, Looker משתמש בחבילת אישורי הבסיס של רשות האישורים (CA) של Java. Looker משתמש בחבילת CA כדי לאמת את האותנטיות של המארחים שאיתם הוא מתקשר כשמתבצעות בקשות יוצאות משרת Looker. זה כולל פעולות כמו שליחת בקשות ל-webhook של דואר יוצא, ביצוע גיבויים של S3, בקשת סוגים שונים של אימות ותקשורת עם שרת אימות הרישיון.
Java מספקת ומנהלת את חבילת אישורי ה-CA, שנמצאת בדיסק. כך האדמינים של מופעי Looker באירוח בצד הלקוח יכולים להוסיף או להסיר אישורים מחבילת ה-CA.
אם בוחרים לשנות את חבילת ה-CA, אפשר להשתמש בכלי השירות test_ssl_cert_validation של Looker כדי לבדוק אם Looker יכול לאמת אישור שרת כשמתבצע חיבור HTTP יוצא. הכלי מקבל את השם של קובץ שמכיל רשימה של כתובות URL שרוצים לבדוק, עם כתובת URL אחת בכל שורה, כמו בדוגמה הבאה:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
אם שם הקובץ הוא hosts, משתמשים בפקודה test_ssl_cert_validation כך:
$ ./looker test_ssl_cert_validation hosts
הפלט של test_ssl_cert_validation אמור להיראות כך:
Using CA file from .../jre/lib/security/cacerts
Attempting connection to https://www.google.com
Certificate verified successfully, connection returned with:
HTTP/1.1 200 OK
Attempting connection to https://looker.com
Certificate verified successfully, connection returned with:
HTTP/1.1 200 OK
Attempting connection to https://wrong.host.badssl.com/
Error connecting to https://wrong.host.badssl.com/: OpenSSL::SSL::SSLError: hostname
"wrong.host.badssl.com" does not match the server certificate
Summary:
Successes: 3, Redirects: 0, Failures: 1
השבתת פרוטוקולי SSL לא מאובטחים
כדי להשבית חיבורים נכנסים של TSL1.0 ל-Looker, פועלים לפי אחת משתי השיטות הבאות:
משנים את השורה
ssl_protocolsבקובץ ההגדרות של Nginx ומסירים את האפשרות TLSv1, כמו שמוצג בקטע הקוד הזה:ssl-protocols: "TLSv1.2 TLSv1.3"מגדירים שרת proxy או מאזן עומסים לפני Looker שמפסיק את פרוטוקול TLS או SSL. לאחר מכן, משביתים את ה-SSL ברמת Looker.
השלבים הבאים
אחרי שתגדירו את אישור ה-SSL, תוכלו להוסיף העברת יציאות כדי לקבל כתובת URL נקייה יותר.