התקנת תעודה ב-Android SDK Emulator: הבדלים בין גרסאות בדף

מתוך ויקי נטפרי
קפיצה לניווט קפיצה לחיפוש
(יצירת דף עם התוכן "== תיאור הבעיה == באנדרויד גירסה 7 ואילך קיים צורך להטמיע את תעודת נטפרי במחיצת המערכת כדי...")
 
מ ((דרך WP:JWB))
 
(16 גרסאות ביניים של 7 משתמשים אינן מוצגות)
שורה 1: שורה 1:
== תיאור הבעיה ==
+
[[קטגוריה:תעודת אבטחה]]
באנדרויד גירסה 7 ואילך קיים צורך להטמיע את תעודת נטפרי במחיצת המערכת כדי שאפליקציות ישתמשו בה בברירת מחדל.
+
{{אנ|Installation of certificate in Android SDK Emulator}}
 +
{{ניווט|תעודת האבטחה}}
  
באמולטור של אנדרויד סטודיו, מחיצת המערכת הוא לקריאה בלבד, לכן גם עם הרשאות רוט אי אפשר לשנות להוסיף קבצים למחיצת המערכת.
+
==תיאור הבעיה==
 +
באנדרואיד מגירסה 7 ואילך קיים צורך להטמיע את תעודת נטפרי במחיצת המערכת כדי שאפליקציות ישתמשו בה בברירת מחדל.
  
== הפתרון ==
+
באמולטור של אנדרואיד סטודיו, מחיצת המערכת הוא לקריאה בלבד, לכן גם עם הרשאות רוט אי אפשר להוסיף קבצים למחיצת המערכת.
 +
 
 +
==פתרון א==
 +
ניתן לנסות להיעזר בפתרון הבא:
 +
 
 +
https://github.com/newbit1/rootAVD
 +
 
 +
2. אני מניח שאתם על לינוקס או מאק, אבל גם בווינדוס זה אותו דבר רק במקום להריץ את ה.sh מריצים את ה.bat. מוודאים שיש את adb בPATH, (תריצו adb devices ותוודאו שהאימולטור מופיע שם), אם לא, תצטרכו להוסיף את הנתיב של platform-tools לPATH ורק אז זה יעבוד.
 +
 
 +
3. מורידים את הריפו [https://github.com/newbit1/rootAVD/archive/refs/heads/master.zip כזיפ] ומחלצים, או עם גיט - <code>git clone <nowiki>https://github.com/newbit1/rootAVD.git</nowiki></code>
 +
 
 +
4. עוברים לתיקייה ומריצים <code>./rootAVD.sh ListAllAVDs</code> כדי לקבל את הרשימה של האימולטורים המותקנים, אתם תוכלו לראות למטה רשימה של פקודות אפשריות לכל אימולטור. לדוגמה: <code>./rootAVD.sh ~/Library/Android/sdk/system-images/android-31/google_apis_playstore/x86_64/ramdisk.img</code> בפקודה הזו הבסיסית אתם מעבירים את הנתיב של קובץ הramdisk.img כפרמטר בודד לסקריפט. אם לא מעניין אתכם גרסת דיבאג, מודולים לקרנל וכדו' זו הפקודה בשבילכם.
 +
 
 +
5. זהו, אם הכל יעבור בשלום - האימולטור ייסגר ואחרי שתפתחו אותו תראו את אפליקציית מג'יסק מותקנת ומוכנת לשימוש.. כעת ניתן להתקין את [https://netfree.link/wiki/%D7%94%D7%AA%D7%A7%D7%A0%D7%AA_%D7%AA%D7%A2%D7%95%D7%93%D7%94_%D7%91%D7%9E%D7%9B%D7%A9%D7%99%D7%A8_%D7%90%D7%A0%D7%93%D7%A8%D7%95%D7%90%D7%99%D7%93_%D7%91%D7%90%D7%9E%D7%A6%D7%A2%D7%95%D7%AA_magisk#.D7.A9.D7.9C.D7.91_.D7.91-_.D7.94.D7.AA.D7.A7.D7.A0.D7.AA_.D7.94.D7.9E.D7.95.D7.93.D7.95.D7.9C אחד מהמודולים המופיעים כאן.]
 +
 
 +
(מקור: אנדרוטיפס-David Lev)
 +
 
 +
==פתרון ב==
 +
 
 +
שימו לב כי הפתרון במדריך דלהלן, עובד רק בתמונת מערכת שמקורה מGoogle APIs ולא תעבוד בתמונת מערכת שמקורה בGoogle Play <ref>https://stackoverflow.com/questions/53674704/adbd-cannot-run-as-root-in-production-builds-even-though-the-debug-build-var</ref>.
 +
 
 +
===קבלת הרשאות כתיבה למחיצת המערכת===
 +
'''התהליך נוסה בהצלחה על מערכת אנדרואיד''' '''9, לכאורה זה יעבוד גם בגירסאות נמוכות יותר, כרגע זה לא עובד באנדרואיד 10.'''
  
=== קבלת הרשאות כתיבה למחיצת המערכת ===
 
 
כדי לקבל אפשרות כתיבה למחיצת המערכת צריך להריץ את האמולטור משורת הפקודה עם פרמטר נוסף.
 
כדי לקבל אפשרות כתיבה למחיצת המערכת צריך להריץ את האמולטור משורת הפקודה עם פרמטר נוסף.
  
הפקודה הרגילה להרצת האמולטור היא: <code>‪‎%localappdata%\Android\Sdk\emulator\emulator.exe -avd ‏<שם המכשיר הווירטואלי></code>‏‬. במקום <code>‏<שם המכשיר הוירטואלי></code> צריך לכתוב שם של מכשיר וירטואלי שמוגדר כבר ב-AVD Manager מתוך תפריט הכלים ב-Android Studio, אפשר לקבל את השם על ידי לחיצה ימנית על המכשיר ובחירת View Details, או על ידי הרצת הפקודה: <code>‎%localappdata%\Android\Sdk\emulator\emulator.exe -list-avds</code> (בד"כ זה יהיה זהה לשם שמוצג בממשק עם החלפת רווחים לקוים תחתונים).
+
הפקודה הרגילה להרצת האמולטור היא: <code>‪‎%localappdata%\Android\Sdk\emulator\emulator.exe -avd ‏<שם המכשיר הוירטואלי></code>‏‬. במקום <code>‏<שם המכשיר הוירטואלי></code> צריך לכתוב שם של מכשיר וירטואלי שמוגדר כבר ב-AVD Manager מתוך תפריט הכלים ב-Android Studio, אפשר לקבל את השם על ידי לחיצה ימנית על המכשיר ובחירת View Details, או על ידי הרצת הפקודה: <code>‎%localappdata%\Android\Sdk\emulator\emulator.exe -list-avds</code> (בד"כ זה יהיה זהה לשם שמוצג בממשק עם החלפת רווחים לקוים תחתונים).
  
 
כדי לקבל אפשרות כתיבה למחיצת המערכת, צריך להוסיף לסוף הפקודה הרגילה את הפרמטר ‎<code>-writable-system</code>.  
 
כדי לקבל אפשרות כתיבה למחיצת המערכת, צריך להוסיף לסוף הפקודה הרגילה את הפרמטר ‎<code>-writable-system</code>.  
  
הפקודה המלאה ייראה כך:
+
הפקודה המלאה תיראה כך:
  %localappdata%\Android\Sdk\emulator\emulator.exe -avd <שם המכשיר הווירטואלי> -writable-system
+
  %localappdata%\Android\Sdk\emulator\emulator.exe -avd <שם המכשיר הוירטואלי> -writable-system
 +
 
 +
===תהליך התקנת התעודה===
 +
ראשית נוריד [[תעודת אבטחה להורדה לפי ספק|מכאן]] את התעודה המותאמת לאנדרואיד, ונגרור אותה למסך המכשיר המדומה (זה יכניס את הקובץ לכרטיס ה-SD המדומה של המכשיר).
 +
 
 +
כדי להתקין תעודת נטפרי,
  
=== תהליך התקנת התעודה ===
+
נפתח חלון שורת הפקודה ונריץ את הפקודות הבאות:
כדי להתקין תעודת נטפרי, נפתח חלון שורת הפקודה ונריץ את הפקודות הבאות:
 
 
  cd %localappdata%\Android\Sdk\platform-tools\
 
  cd %localappdata%\Android\Sdk\platform-tools\
 
 
  adb root
 
  adb root
 
 
  adb remount
 
  adb remount
 +
adb shell
  
adb shell
+
זה יכניס אותנו ל-shell עם הרשאות רוט.
<span id=":as.co" class="tL8wMe EMoHub" dir="rtl"></span>זה יכניס אותנו ל-shell עם הרשאות רוט.
 
<span id=":as.co" class="tL8wMe EMoHub" dir="rtl"></span>עכשיו נגרור את קובץ התעודה הנכונה (המותאמת לאנדרויד, ניתן להורידה מ[[תעודת אבטחה להורדה לפי ספק|כאן]] לפי ספק) על גבי חלון האמולטור (זה יכניס את הקובץ לכרטיס ה-SD המדומה של המכשיר).
 
  
ואז נריץ את הפקודות הבאות:
+
לאחר מכן נריץ את הפקודות הבאות:
 
  cp /sdcard/Download/XXXXXXXX.X /system/etc/security/cacerts/
 
  cp /sdcard/Download/XXXXXXXX.X /system/etc/security/cacerts/
 +
chmod a+r  /system/etc/security/cacerts/XXXXXXXX.0
 +
במקום XXXXXXXX.0 נכתוב את שם קובץ התעודה.
  
chown a+r  /system/etc/security/cacerts/XXXXXXXX.X
 
 
זהו, התעודה הותקנה! אפשר לסגור את חלון הפקודה.
 
זהו, התעודה הותקנה! אפשר לסגור את חלון הפקודה.
  
=== הרצות חוזרות ===
+
===הרצות חוזרות===
חשוב להבין שהתהליך הנ"ל ''לא משנה את מחיצת המערכת הקיימת!'' כאשר מריצים את המכונה עם הפרמטר  ‎<code>-writable-system</code> זה מייצר שכבה נוספת על גבי המחיצה הקיימת שבה נשמרים השינויים שלנו. ולכן, כדי שהשינויים יופיעו בהרצות הבאות, חייבים להריץ את המכונה עם הפרמטר הנ"ל.
+
חשוב להבין שהתהליך הנ"ל '''לא משנה את מחיצת המערכת הקיימת!''' כאשר מריצים את המכונה עם הפרמטר  ‎<code>-writable-system</code> זה מייצר שכבה נוספת על גבי המחיצה הקיימת שבה נשמרים השינויים שלנו. ולכן, כדי שהשינויים יופיעו בהרצות הבאות, חייבים להריץ את המכונה עם הפרמטר הנ"ל.
 +
 
 +
[https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/ הרחבה]
 +
 
 +
==פתרון ג==
 +
ניתן להטמיע את התעודה של נטפרי באפליקציה הספציפית שאתם מפתחים למשך זמן הפיתוח , <br>
 +
תורידו את התעודה של נטפרי מכאן http://netfree.link/netfree-ca.crt ותעתיקו אותה לתיקייה res/raw  באפליקציה .<br>
 +
תוסיפו קובץ בשם netfree_cert.xml בתיקייה res/xml  ותעתיקו לתוכו את הקטע הבא
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<network-security-config>
 +
<base-config>
 +
<trust-anchors>
 +
<certificates src="@raw/netfree_ca"/>
 +
<certificates src="system"/>
 +
</trust-anchors>
 +
</base-config>
 +
</network-security-config>
 +
 
 +
<br>
 +
בקובץ הmanifest תוסיפו מתחת לתגית  ‎<code>"android:networkSecurityConfig="@xml/netfree_cert</code> application
 +
<br> כמו בתמונה [https://netfree.link/upload-file/9469f2461772e8a3df7de6ac7d87b3ce385e8c0a כאן] .
 +
<br> שימו לב שלכל ספק של נטפרי שמתחברים איתו יש תעודה בנפרד לכן אם תעברו ספק תצטרכו להוריד שוב את התעודה מהלינק ולהחליף , <br>
 +
או שתיצרו תיקייה עם כמה תעודות ותצביעו עליה .<br>
 +
 
 +
[https://stackoverflow.com/questions/71530525/trust-my-own-self-signed-certificate-in-local-network-using-android-native-andr#:~:text=of%20resources%20online.-,Step%202,-Open%20android%20studio מקור] .
 +
 
 +
 
 +
<references />

גרסה אחרונה מ־01:52, 3 ביוני 2024

For English click here

למעבר מתצוגת עריכה לתצוגת קריאה

עמוד ראשי > תעודת האבטחה > התקנת תעודה ב-Android SDK Emulator ‎‎


תיאור הבעיה

באנדרואיד מגירסה 7 ואילך קיים צורך להטמיע את תעודת נטפרי במחיצת המערכת כדי שאפליקציות ישתמשו בה בברירת מחדל.

באמולטור של אנדרואיד סטודיו, מחיצת המערכת הוא לקריאה בלבד, לכן גם עם הרשאות רוט אי אפשר להוסיף קבצים למחיצת המערכת.

פתרון א

ניתן לנסות להיעזר בפתרון הבא:

https://github.com/newbit1/rootAVD

2. אני מניח שאתם על לינוקס או מאק, אבל גם בווינדוס זה אותו דבר רק במקום להריץ את ה.sh מריצים את ה.bat. מוודאים שיש את adb בPATH, (תריצו adb devices ותוודאו שהאימולטור מופיע שם), אם לא, תצטרכו להוסיף את הנתיב של platform-tools לPATH ורק אז זה יעבוד.

3. מורידים את הריפו כזיפ ומחלצים, או עם גיט - git clone https://github.com/newbit1/rootAVD.git

4. עוברים לתיקייה ומריצים ./rootAVD.sh ListAllAVDs כדי לקבל את הרשימה של האימולטורים המותקנים, אתם תוכלו לראות למטה רשימה של פקודות אפשריות לכל אימולטור. לדוגמה: ./rootAVD.sh ~/Library/Android/sdk/system-images/android-31/google_apis_playstore/x86_64/ramdisk.img בפקודה הזו הבסיסית אתם מעבירים את הנתיב של קובץ הramdisk.img כפרמטר בודד לסקריפט. אם לא מעניין אתכם גרסת דיבאג, מודולים לקרנל וכדו' זו הפקודה בשבילכם.

5. זהו, אם הכל יעבור בשלום - האימולטור ייסגר ואחרי שתפתחו אותו תראו את אפליקציית מג'יסק מותקנת ומוכנת לשימוש.. כעת ניתן להתקין את אחד מהמודולים המופיעים כאן.

(מקור: אנדרוטיפס-David Lev)

פתרון ב

שימו לב כי הפתרון במדריך דלהלן, עובד רק בתמונת מערכת שמקורה מGoogle APIs ולא תעבוד בתמונת מערכת שמקורה בGoogle Play [1].

קבלת הרשאות כתיבה למחיצת המערכת

התהליך נוסה בהצלחה על מערכת אנדרואיד 9, לכאורה זה יעבוד גם בגירסאות נמוכות יותר, כרגע זה לא עובד באנדרואיד 10.

כדי לקבל אפשרות כתיבה למחיצת המערכת צריך להריץ את האמולטור משורת הפקודה עם פרמטר נוסף.

הפקודה הרגילה להרצת האמולטור היא: ‪‎%localappdata%\Android\Sdk\emulator\emulator.exe -avd ‏<שם המכשיר הוירטואלי>‏‬. במקום ‏<שם המכשיר הוירטואלי> צריך לכתוב שם של מכשיר וירטואלי שמוגדר כבר ב-AVD Manager מתוך תפריט הכלים ב-Android Studio, אפשר לקבל את השם על ידי לחיצה ימנית על המכשיר ובחירת View Details, או על ידי הרצת הפקודה: ‎%localappdata%\Android\Sdk\emulator\emulator.exe -list-avds (בד"כ זה יהיה זהה לשם שמוצג בממשק עם החלפת רווחים לקוים תחתונים).

כדי לקבל אפשרות כתיבה למחיצת המערכת, צריך להוסיף לסוף הפקודה הרגילה את הפרמטר ‎-writable-system.

הפקודה המלאה תיראה כך:

%localappdata%\Android\Sdk\emulator\emulator.exe -avd <שם המכשיר הוירטואלי> -writable-system

תהליך התקנת התעודה

ראשית נוריד מכאן את התעודה המותאמת לאנדרואיד, ונגרור אותה למסך המכשיר המדומה (זה יכניס את הקובץ לכרטיס ה-SD המדומה של המכשיר).

כדי להתקין תעודת נטפרי,

נפתח חלון שורת הפקודה ונריץ את הפקודות הבאות:

cd %localappdata%\Android\Sdk\platform-tools\
adb root
adb remount
adb shell

זה יכניס אותנו ל-shell עם הרשאות רוט.

לאחר מכן נריץ את הפקודות הבאות:

cp /sdcard/Download/XXXXXXXX.X /system/etc/security/cacerts/
chmod a+r  /system/etc/security/cacerts/XXXXXXXX.0

במקום XXXXXXXX.0 נכתוב את שם קובץ התעודה.

זהו, התעודה הותקנה! אפשר לסגור את חלון הפקודה.

הרצות חוזרות

חשוב להבין שהתהליך הנ"ל לא משנה את מחיצת המערכת הקיימת! כאשר מריצים את המכונה עם הפרמטר ‎-writable-system זה מייצר שכבה נוספת על גבי המחיצה הקיימת שבה נשמרים השינויים שלנו. ולכן, כדי שהשינויים יופיעו בהרצות הבאות, חייבים להריץ את המכונה עם הפרמטר הנ"ל.

הרחבה

פתרון ג

ניתן להטמיע את התעודה של נטפרי באפליקציה הספציפית שאתם מפתחים למשך זמן הפיתוח ,
תורידו את התעודה של נטפרי מכאן http://netfree.link/netfree-ca.crt ותעתיקו אותה לתיקייה res/raw באפליקציה .
תוסיפו קובץ בשם netfree_cert.xml בתיקייה res/xml ותעתיקו לתוכו את הקטע הבא

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="@raw/netfree_ca"/>
<certificates src="system"/>
</trust-anchors>
</base-config>
</network-security-config>


בקובץ הmanifest תוסיפו מתחת לתגית ‎"android:networkSecurityConfig="@xml/netfree_cert application
כמו בתמונה כאן .
שימו לב שלכל ספק של נטפרי שמתחברים איתו יש תעודה בנפרד לכן אם תעברו ספק תצטרכו להוריד שוב את התעודה מהלינק ולהחליף ,
או שתיצרו תיקייה עם כמה תעודות ותצביעו עליה .

מקור .