ฉันจะค้นหาและเรียกใช้ keytool ได้อย่างไร


185

ฉันกำลังอ่านคำแนะนำการพัฒนาของนักพัฒนา Facebook ที่นี่

มันบอกว่าฉันต้องใช้ keytool เพื่อส่งออกลายเซ็นสำหรับแอพของฉันเช่น:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

ฉันไม่ทราบวิธีการค้นหา keytool เพื่อเรียกใช้ ฉันพยายามเปิดพรอมต์คำสั่ง Windows แล้ววางคำสั่งด้านบน แต่ไม่ได้ผล


ถ้าคุณใช้ระบบ Linux /usr/local/java/bin# ./keytoolถ้าคุณใช้ Windowsfind the JDK install path and check bin folder
Elshan

ฉันพบสิ่งนี้คุณสามารถใช้เพื่อแก้ปัญหาstackoverflow.com/a/57390582/13405428
ashraf alqaabera

คำตอบ:


184

ฉันพบวิธีการแก้ปัญหาด้วยตัวเองตามใบเสนอราคาด้านล่าง มันใช้งานได้ดี

"C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe" -exportcert -alias
> sociallisting -keystore "D:\keystore\SocialListing"  |
> "C:\cygwin\bin\openssl.exe" sha1 -binary | "C:\cygwin\bin\openssl.exe"
> base64

6
ฉันพบมันที่นี่: C: \ Program Files \ Java \ jre1.8.0_111 \ bin \ keytool.exe
Jaime Montoya

9
หรือ C: \ Program Files \ Android \ Android Studio \
jre

ขอบคุณ @SHAHM: ยอดเยี่ยมมากสำหรับพวกเราที่ไม่ต้องการดาวน์โหลด Java AGAIN อย่างชัดเจนและถูก bugged ทุกสัปดาห์เพื่ออัพเกรดเป็นเวอร์ชั่นล่าสุด
Pete Alvin

116

เพียงป้อนคำสั่งเหล่านี้ลงใน Windows command

cd C:\Program Files\Java\jdk1.7.0_09\bin

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\userName\.android\debug.keystore" -list -v

รหัสผ่านพื้นฐานคือ android

คุณจะถูกนำเสนอด้วยMD5, SHA1และSHA256ปุ่ม; เลือกหนึ่งที่คุณต้องการ


3
สิ่งนี้ใช้ได้สำหรับฉัน สำหรับคีย์ดีบักให้ใช้ -alias androiddebugkey
Broo

ฉันใช้สำหรับรุ่นที่วางจำหน่ายบรรทัดถัดไป: 1) cd C: \ Program Files \ Java \ jdk1.8.0_162 \ bin และถัดไป 2) keytool -list -v -keystore "C: \ AndroidProjects \ Project1 \ app \ myapp.keystore "
Andrew Grow

2
keytool error: java.lang.Exception: Only one command is allowed: both -exportcert and -list were specified.
Gustaf Liljegren

80

ในการรับรหัสแฮชของ Android ให้ทำตามขั้นตอนเหล่านี้ (สำหรับแอพ Facebook)

  1. ดาวน์โหลด openssl สำหรับ windows ได้ที่นี่
  2. ตอนนี้เปิดเครื่องรูดไปที่ไดรฟ์ c
  3. เปิดคำสั่ง cmd
  4. ชนิด cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. จากนั้นพิมพ์เท่านั้น keytool -export -alias myAlias -keystore C:\Users\<your user name>\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. เสร็จสิ้น

ในการรับรหัสลายนิ้วมือใบรับรอง (MD5) ให้ทำตามขั้นตอนเหล่านี้

  1. ไปที่ - C: \ Program Files \ Java \ jdk1.6.0_26 \ bin
  2. ภายในโฟลเดอร์ bin เรียกใช้jarsigner.exeไฟล์
  3. เปิดคำสั่ง cmd
  4. ชนิด cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. จากนั้นพิมพ์อีกครั้งบน cmd keytool -list -keystore "C:/Documents and Settings/<your user name>/.android/debug.keystore"
  6. มันจะถามรหัสผ่าน Keystore ทันที ค่าเริ่มต้นคือandroidประเภท "" และป้อน
  7. เสร็จสิ้น

สิ่งนี้ใช้ได้สำหรับฉันจนถึงขั้นตอนสุดท้าย หลังจากพิมพ์ใน "android" มันคายขยะ ... ฉันเดาว่ามันไม่ได้ใช้การเข้ารหัสที่เหมาะสมเหรอ? ถ้าฉันป้อนบางอย่างเช่น "blah" มันจะบอกฉันว่ารหัสผ่านไม่ถูกต้อง ดังนั้นจึงรู้ว่าฉันมีรหัสผ่านที่ถูกต้องเมื่อฉันพิมพ์ใน "android"
ArtOfWarfare

ฉันพบปัญหาคือฉันได้ละทิ้งธง - รายการและ -v
ArtOfWarfare

21

keytool เป็นส่วนหนึ่งของ JDK

พยายามที่จะย่อหน้า%{JAVA_HOME}\งบ exec c:\{path to jdk}\binหรือ


ฉันใส่ไฟล์ cer และไฟล์ truststore ลงในไดเรกทอรีเดียวกันและใช้คำสั่งนี้:"%JAVA_HOME%\bin\keytool" -import -keystore truststore -file certificate.cer -alias my-alias
Todd Hale

13

KeyTool เป็นส่วนหนึ่งของ JDK คุณจะพบมันโดยสมมติว่าคุณติดตั้ง JDK ด้วยการตั้งค่าเริ่มต้นใน$JAVA_HOME/bin


9

Robby Pondคำตอบของทั่วไปสามารถใช้JAVA_HOMEตัวแปรสภาพแวดล้อมและเพื่อชดเชยช่องว่างใด ๆ ที่อาจเกิดขึ้นในเส้นทาง (เช่นProgram Files):

"%JAVA_HOME%\bin\keytool" -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64


4

Keytool เป็นส่วนหนึ่งของ Java SDK คุณควรจะสามารถค้นหาได้ในไดเรกทอรี Java SDK ของคุณเช่น C: \ Program Files \ Java \ jdk1.6.0_14 \ bin


4

บนหน้าต่าง cmd (จำเป็นต้องเรียกใช้ในฐานะผู้ดูแลระบบ)

cd %JAVA_HOME% 

ใช้งานได้เฉพาะเมื่อคุณตั้งค่าตัวแปรสภาพแวดล้อมระบบ JAVA_HOME ในการตั้งค่าตัวแปรระบบสำหรับเส้นทางของคุณคุณสามารถทำได้

setx %JAVA_HOME% C:\Java\jdk1.8.0_121\

จากนั้นคุณสามารถพิมพ์

cd c:\Java\jdk1.8.0_121\bin

หรือ

cd %JAVA_HOME%\bin

จากนั้นดำเนินการคำสั่งใด ๆ ที่มีให้โดย JAVA jdk's เช่น

keytool -genkey -v -keystore myapp.keystore -alias myapp

คุณเพียงแค่ต้องตอบคำถาม (เทียบเท่ากับการพิมพ์ค่าในบรรทัด cmd) หลังจากกดปุ่ม Enter! คีย์จะถูกสร้างขึ้น


3

keytool ตั้งอยู่ในไดเรกทอรี JDK bin ($ JAVA_HOME / bin) JAVA_HOME เป็นไดเรกทอรีการติดตั้ง JDK ของคุณ หากต้องการใช้บรรทัดคำสั่งนั้นคุณควรรวม $ JAVA_HOME / bin ไว้ในตัวแปรสภาพแวดล้อม PATH ของคุณ


3

Android: ตำแหน่งที่จะรันคำสั่ง keytool ใน Android

คำสั่ง Keytool สามารถรันได้ที่พรอมต์คำสั่ง dos ของคุณหาก JRE ถูกตั้งค่าไว้ในตัวแปร classpath ของคุณ

ตัวอย่างเช่นถ้าคุณต้องการรับลายนิ้วมือ MD5 ของ SDK Debug Certificate สำหรับ Android

เพียงแค่เรียกใช้คำสั่งต่อไปนี้ ...

C:\Documents and Settings\user\.android>  keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

โดยที่C:\Documents and Settings\user\.android>เป็นพา ธ ที่มีการdebug.keystoreรับรองนั้น

สำหรับข้อมูลรายละเอียดโปรดไปที่http://code.google.com/android/add-ons/google-apis/mapkey.html#getdebugfingerprint


3

ขึ้นอยู่กับเวอร์ชันของ Eclipse ของคุณ (ฉันใช้ Kepler) ไปที่ Windows> ค่ากำหนด> Android> Build

คุณจะพบเส้นทางที่ตั้งของที่เก็บคีย์ดีบักรวมถึงลายนิ้วมือ SHA1 (ซึ่งคุณสามารถคัดลอกและใช้งานได้)


3

ฉันพบสิ่งนี้ในโพสต์อื่นซึ่งไม่ได้รับ upvotes มากมาย แต่มันมีประโยชน์มากสำหรับฉัน ดังนั้นจะเพิ่มที่นี่

Android Studioจะนำคีย์ทูลมาด้วย

C:\Program Files\Android\Android Studio\jre\bin

คุณสามารถดูโพสต์ของเขาด้านล่างโดย Richar Heap พร้อมการอ้างอิงที่เป็นประโยชน์ ฉันเคยเห็นสิ่งนี้มาก่อน แต่ลืมไปเลย https://stackoverflow.com/a/51524526/4446406


2

KEYTOOL อยู่ใน JAVAC SDK ดังนั้นคุณต้องค้นหาในไดเรกทอรีที่มีjavac


2

หากคุณติดตั้ง visual Studio พร้อมการสนับสนุนการพัฒนา Xamarin / มือถือคุณจะมีการติดตั้ง Java ที่นี่C:\Program Files\Android\jdk\microsoft_dist_openjdk_{version}\bin\เหมือนกรณีของฉัน


1

keytoolมาพร้อมกับ JDK หากคุณใช้ cygwin นี่อาจเป็นเส้นทางของคุณอยู่แล้ว มิฉะนั้นคุณอาจขุดในโฟลเดอร์ bin ของ JDK

คุณอาจต้องใช้ cygwin ต่อไปเพื่อให้ shell shell ( |) ทำงานได้


คุณช่วยบอกวิธีการเรียกใช้คำสั่งด้านล่างได้ไหม keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binary | openssl base64
เหงียนมินห์บินห์

1
ใช่ฉันทำ. และเมื่อฉันเรียกใช้คำสั่งข้างต้น CMD พูดว่า: 'openssl' ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก, โปรแกรมที่ทำงานได้หรือไฟล์แบตช์
เหงียนมินห์บินห์

คุณอาจต้องติดตั้งแพ็คเกจ openssl เช่นกันผ่านการตั้งค่าของ cygwin
Matthew Willis

1
ฉันติดตั้งแพ็คเกจ openssl แล้ว ปัญหายังคงเกิดขึ้น :(
เหงียนมินห์บินห์

คุณสามารถเปิด openssl ได้ด้วยตัวเองหรือไม่? ตัวเลือกใดที่คุณเห็นเมื่อคุณพิมพ์ "เปิด" และกดแท็บ
Matthew Willis

1

สังเกตไม่กี่ขณะที่ฉันได้รับปัญหาเดียวกัน (Windows) 1. ท่อเปลือกเป็นสิ่งสำคัญ 2. หากคุณใช้ OpenSSL หรือ Cygwin คุณต้องติดตั้งอย่างแน่นอน 3. keytool มาพร้อมกับ JDK ดังนั้นคุณต้องชี้ไปที่คำสั่งหรือคุณมีซีดีไปยังโฟลเดอร์ JDK / bin (ที่ exe อยู่) 4. ที่เก็บคีย์ดีบักจะอยู่ที่ ~ / .android / debug.keystore 5. รหัสผ่านคือ "android" ไม่ว่าคุณจะข้ามมันหรือพิมพ์เมื่อได้รับแจ้ง 6. สำหรับชื่อนามแฝงคุณสามารถเปิด (ไม่ต้องบันทึกเพียงแค่เปิดและปิด) ไฟล์ keystore ด้วยโปรแกรมแก้ไขและอ่านมัน 7. สำคัญที่สุด - มีความแตกต่างคือการระบุเส้นทางที่เก็บคีย์ภายในเครื่องหมายคำพูดและไม่มี ฉันทำให้มันทำงานโดยใช้เส้นทางที่เก็บคีย์ภายในเครื่องหมายคำพูดคู่ ในฐานะที่เป็น remix090378 กล่าวและตามคำแนะนำคำสั่งนี้ใช้งานได้จริง - cd C: \ Program Files \ Java \ jdk1.7.0_09 \ bin

keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ userName.android \ debug.keystore" -list -v


0

ในกรณีของฉันฉันได้สร้างไฟล์ APK โดยใช้คำสั่งionic cordova build android --prodแล้วและฉันต้องการลายนิ้วมือ SHA-1 สำหรับไฟล์ APK ที่มีอยู่แล้ว นี่คือวิธีที่ฉันได้รับโดยการรันคำสั่งต่อไปนี้ในไดเรกทอรี App:

keytool -list -printcert -jarfile app-debug.apk

ดังนั้นโดยทั่วไปฉันรันคำสั่งด้านบนในตำแหน่งแอพต่อไปนี้:

C:\myApp\platforms\android\app\build\outputs\apk\debug>keytool -list -printcert -jarfile app-debug.apk

สิ่งนี้ทำให้ฉันมีลายนิ้วมือ SHA1 เป็น: 7B:6B:AD:...

หวังว่านี่จะช่วยใครซักคน!


0

ระบุว่าคุณได้ติดตั้ง Java และควรเป็น JDK ในระบบของคุณ (ตอบคำถามเพราะคุณกล่าวถึงมันในคำถามของคุณ) คุณควรมียูทิลิตี้ keytool ในbinโฟลเดอร์การติดตั้งของคุณ

หากเป็นเช่นนั้นสิ่งที่คุณสามารถทำต่อไปคือเพิ่มโฟลเดอร์ bin นั้นลงในPATHตัวแปรสภาพแวดล้อมของการติดตั้ง Windows ของคุณ

ครั้งต่อไปที่คุณจะเปิดเชลล์ Windows และคุณจะพิมพ์keytoolคุณจะสามารถเรียกใช้ยูทิลิตี้จริงได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.