התקנת תעודה ב-Docker
For English click here
למעבר מתצוגת עריכה לתצוגת קריאה
עמוד ראשי > תעודת האבטחה > התקנת תעודה ב-Docker
Docker הינה תוכנה שמאפשרת לבנות סביבות הרצה עצמאיות על גבי מערכת הפעלה.
שגיאות אבטחה ביישומים והרצות מתוך הקונטיינר
קונטיינר של Docker מספק סביבה עצמאית - כמין מחשב חדש בפני עצמו.
כלים ותוכנות שפועלות בתוך הקונטיינר וניגשים לאינטרנט יתקלו בתעודה לא מוכרת של נטפרי, ולכן צריך להתקין את התעודה של נטפרי ברמת הקונטיינר.
התקנת תעודת אבטחה בתמונות הנפוצות
יש להוסיף את השורות הבאות לDockerfile, מתחת לשורת הFROM (במידה ואתם יודעים את טיב הפעולות תוכלו לשים אותו מאוחר ככל היותר לפני השלב הראשון בו נצרכת התעודה):
# --- NETFREE CERT INTSALL --- ADD https://netfree.link/dl/unix-ca.sh /home/netfree-unix-ca.sh RUN cat /home/netfree-unix-ca.sh | sh ENV NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt ENV REQUESTS_CA_BUNDLE=/etc/ca-bundle.crt ENV SSL_CERT_FILE=/etc/ca-bundle.crt # --- END NETFREE CERT INTSALL ---
התעודה נבדקה על תמונות מבוססות ubuntu,alpine,centos וזה מגדיר גם משתני סביבה להפעלה תקינה של python ו nodejs
במקרה של קונטיינר קיים, ללא אפשרות לשנות את ה Dockerfile
יש להכנס לתוך הדוקר (פקודת docker exec, או דרך התוכנה docker-desktop) ולהריץ בתוכו את הפקודה:
curl https://netfree.link/dl/unix-ca.sh | sh
לאחר מכן לערוך את הקובץ ~/.bashrc ולהוסיף לו את הפקודות הבאות:
export NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt export REQUESTS_CA_BUNDLE=/etc/ca-bundle.crt export SSL_CERT_FILE=/etc/ca-bundle.crt
במקרה של שימוש בdocker compose ללא Dockerfile
ניתן לשלב את הוראות ההתקנה כפקודה יחידה, בתוך הקובץ docker-compose.yml, עבור הservice שבו יש צורך להתקין את תעודות האבטחה. לצורך הדגמה:
#docker-compose.yml file example version: "3.9" services: your-app: image: node command: sh -c "(curl -sL https://netfree.link/dl/unix-ca.sh | sh ) && export NODE_EXTRA_CA_CERTS=/etc/ca-bundle.crt && npm install && npm start"
במקרה בעיה, ולהוראות מתאימות לתמונות אחרות
כמובן שלכל תמונה ויישומים שבתוכה יש את הדרך שלה, במקרה שאתם מתקשים היעזרו במערכת הפניות (כללו תמיד בפניה את תוכן/קובץ הdockerfile במידת האפשר, ולפחות את שם תבנית התמונה, ולוג מלא ככל האפשר של השגיאה).
נסו גם להיעזר בפורומים טכניים.
אפשרות נוספת
https://github.com/AriFordsham/docker-cert
בפרוייקט הנ"ל יש סקריפט שאפשר להכניס במיקום כלשהו ב-PATH עם זכות קדימה לפקודת docker המקורית כך שהסקריפט יעטוף את פקודת docker המקורית. הסקריפט מייבא בצורה שקופה את התעודות של המערכת המארחת לתוך הקונטיינר בלי צורך לשנות את ה-DOCKERFILE. זה עובד במערכות לינוקס וווינדוס-WSL.
שאלות ובעיות בהפעלת הסקריפט ניתן לשאול כאן: https://forum.netfree.link/topic/9301
שגיאות ברמת תוכנת הDocker עצמה
תוכנת Docker עצמה משתמשת באינטרנט עבור הורדה של תמונה מהDocker hub או מקור אינטרנטי אחר, בדרך כלל פעולה זו לא נתקלת בשגיאה של תעודת אבטחה כי התכונה מסתמכת על מאגר התעודות המותקן במחשב.
אם אתם נתקלים בשגיאה בשלב הזה (בד"כ בשורת FROM של קובץ Dockerfile או בפקודת docker pull או docker run), השגיאה נראית ככה:
Get https://registry-1.docker.io/v2/: x509: certificate signed by unknown authority
או
Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate signed by unknown authority.
- ראשית ודאו שהתקנתם את התעודה של נטפרי במערכת שלכם (אם זה עתה התקנתם את התעודה, יש להפעיל מחדש את הDocker, הפעלת המחשב מחדש כמובן גם טובה).
- אם מדובר בהתקנה של Docker Toolbox, אז לא די בתעודה ברמת המערכת הפעלה כי מערכת זו עושה שימוש במערכת וירטואלית לפעולות של Docker עצמה.
במקרה זה הפעילו את הטרמינל של Docker והריצו בו את הפקודות הבאות:
docker-machine ssh default curl -L http://api.internal.netfree.link/ca/netfree-ca.crt | sudo tee -a /etc/ssl/certs/ca-certificates.crt /var/lib/boot2docker/certs sudo /etc/init.d/docker restart exit
שגיאות ברמת תוכנת Minikube
תוכנת Minikube מספק מערכת להרצת kubernetes, ומפעיל סביבת Docker פנימי, אם אתם נתקלים בשגיאה של תעודת אבטחה או לחילופין התקנת חבילות שלו לא עבודת חלק.
במקרה זה הפעילו את הטרמינל של minikube והריצו בו את הפקודות הבאות:
minikube ssh curl -sL http://netfree.link/dl/ubuntuCertInstallNetFree.sh | sudo -E bash - sudo /etc/init.d/docker restart exit