ข้อผิดพลาด keytool Keystore ถูกดัดแปลงหรือรหัสผ่านไม่ถูกต้อง


191

ฉันได้รับข้อผิดพลาดในการติดตามขณะที่สร้างใบรับรองบนเครื่องของฉัน

C:\Users\abc>keytool -genkey -alias tomcat -keyalg RSA
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

ฉันคิดว่ามีปัญหาบางอย่างในรุ่น jdk ฉันใช้คำสั่งเดียวกันกับเครื่องของฉันและทำงานได้ดี

กรุณาแบ่งปันอินพุตของคุณ


1
คุณให้รหัสผ่านที่ถูกต้องหรือไม่ และเรียกใช้คำสั่งจากไดเรกทอรีที่เหมาะสม?
dev2d

1
ขณะที่ฉันกำลังสร้างมันดังนั้นฉันกำลังป้อนรหัสผ่านใหม่จากไดเรกทอรีใดที่ฉันควรใช้มัน?
C4CodeE4Exe

keytool -genkeypair -alias tomcat -keyalg RSA -keystore D: \ keystore.jks ลองใช้สิ่งนี้เพื่อสร้างที่เก็บคีย์แล้วส่งออก cer เช่น keytool -export -alias mycert -keystore D: \ keystore.jks -file vorburger.cer
dev2d

คุณช่วยอธิบายได้ไหมว่ามันจะมีผลเช่นเดียวกันกับ "keytool -genkey - alias tomcat -keyalg RSA"
C4CodeE4Exe

คุณช่วยบอกวัตถุประสงค์ของการสร้างงานนี้ได้ไหม
dev2d

คำตอบ:


89

จากคำอธิบายของคุณฉันคิดว่าคุณอยู่บนเครื่อง windows และบ้านของคุณเป็น abc

ดังนั้นตอนนี้: สาเหตุ

เมื่อคุณเรียกใช้คำสั่งนี้

keytool -genkey -alias tomcat -keyalg RSA

เนื่องจากคุณไม่ได้ระบุ keystore อย่างชัดเจนมันจะพยายามสร้าง (และในกรณีของคุณเมื่อคุณได้รับการยกเว้นเพื่ออัปเดต) keystore C:\users\abc>.keystoreและแน่นอนคุณต้องระบุรหัสผ่านเก่าสำหรับ. keystore ในขณะที่ฉันเชื่อว่าคุณกำลังให้บริการรุ่นของคุณ อันใหม่).

สารละลาย

  1. ลบ.keystoreจากC:\users\abc>ตำแหน่งและลองคำสั่ง

  2. หรือลองทำตามคำสั่งซึ่งจะสร้าง xyzkeystore ใหม่:

    keytool -genkey -keystore xyzkeystore -alias tomcat -keyalg RSA

หมายเหตุ: -genkeyเก่าแล้วตอนนี้ค่อนข้างใช้งาน-genkeypairแม้ว่าจะใช้ได้ทั้งคู่


แม้ว่าฉันจะคิดออกเอง "อาจลบ .keystore จากตำแหน่ง C: \ users \ abc> และลองใช้คำสั่ง" เป็นคำตอบที่ถูกต้อง
C4CodeE4Exe

เป็นไปได้ที่จะส่งมอบที่เก็บคีย์ในอาร์กิวเมนต์หรือไม่
user1767754

2
ฉันได้ลบไฟล์ที่เก็บคีย์ที่มีอยู่แล้วจากนั้นทำตามคำสั่ง keytool -genkey -alias key0-keyalg RSA จากนั้นจะถามรหัสผ่านใหม่และข้อมูลอื่น ๆ ที่ฉันให้ แต่ตอนนี้เมื่อฉันพยายามสร้าง apk ที่ลงชื่อแล้วมันจะแสดงข้อความแสดงข้อผิดพลาดเดียวกัน - "Keystore ถูกดัดแปลงหรือรหัสผ่านไม่ถูกต้อง" ปัญหาอยู่ที่นี่ใช่ไหม

266

ฉันแก้ไขได้โดยใช้รหัสผ่านเริ่มต้นสำหรับ cacerts keystore: 'changeit'


ฮ่าฮ่า .. จริงๆแล้วมันไม่เปลี่ยนรหัสผ่านเป็นรหัสใหม่และงานเริ่มต้น: D
Muhammad Suleman

ขอบคุณ :) .. มันทำงานได้ในตอนท้ายของฉัน .. และฉันใช้รหัสผ่านที่ฉันใช้ในการส่งออกไฟล์. cer ..
Danyal Sandeelo

ทำงานให้ฉัน ขอบคุณ!
colefner

157

คำตอบนี้จะเป็นประโยชน์สำหรับผู้ใช้ Mac ใหม่ (ใช้งานได้กับ Linux, Window 7 64 บิตด้วย)

รหัสผ่านว่างเปล่าทำงานใน mac ของฉัน (วางบรรทัดด้านล่างในเทอร์มินัล)

keytool -list -v -keystore ~/.android/debug.keystore

เมื่อมันถาม

Enter keystore password:  

เพียงแค่กดปุ่ม Enter (อย่าพิมพ์อะไรเลย) มันควรจะทำงาน

โปรดตรวจสอบให้แน่ใจว่าเป็นdebug.keystore ไฟล์เริ่มต้นไม่ใช่สำหรับไฟล์ที่เก็บคีย์ตามโครงการของคุณ (รหัสผ่านอาจเปลี่ยนแปลงได้สำหรับสิ่งนี้)

ทำงานได้ดีสำหรับ MacOS Sierra 10.10+ ด้วย

ฉันได้ยินมาว่ามันใช้งานได้กับสภาพแวดล้อมของลินุกซ์เช่นกัน ฉันยังไม่ได้ทดสอบใน linux เลย


1
ขอบคุณ มันทำงานบน windows 10 ของฉันเพื่อดีบัก keystore
Vinayak Singh

11

การใช้ changeit สำหรับรหัสผ่านก็สำคัญเช่นกัน

ในที่สุดคำสั่งนี้ใช้งานได้สำหรับฉัน (กับท่าเทียบเรือ):

 keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass changeit -validity 360 -keysize 2048

11

ใน Tomcat 8.5 ให้ความสนใจในการเขียนชื่อที่ถูกต้องของคุณลักษณะ นี่คือรหัสของฉันบน server.xml:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/keystore" certificateKeystorePassword="mypassword" type="RSA"/>
    </SSLHostConfig>
</Connector>

คุณสามารถเยี่ยมชมhttps://tomcat.apache.org/tomcat-8.5-doc/config/http.htmlเพื่อดูแอตทริบิวต์ทั้งหมด


1
ขอบคุณสำหรับการชี้ให้เห็นว่ารหัสผ่านถูกเรียกจากที่ใด! :)
N00b Pr0grammer



4

ทำงานบน Windows

พรอมต์คำสั่งเปิด (กด Windows Key + R แล้วพิมพ์ "cmd" โดยไม่ต้องใส่เครื่องหมายคำพูดในกล่องโต้ตอบที่ปรากฏขึ้นแล้วกด Enter Key)

จากนั้นพิมพ์รหัสดมกลิ่นด้านล่าง:

  1. cd C: \ Program Files \ Java \ jdk1.7.0_25 \ bin

จากนั้นพิมพ์คำสั่งต่อไปนี้

  1. รายการ keytool -keystore "C: / เอกสารและการตั้งค่า / ชื่อของคุณ / .android / debug.keystore"

จากนั้นจะขอรหัสผ่าน Keystore ทันที รหัสผ่านเริ่มต้นคือ "android" พิมพ์และป้อนหรือเพียงแค่กด "อย่าพิมพ์รหัสผ่านใด ๆ "


3

~/.gradle/gradle.propertiesตรวจสอบโฟลเดอร์ที่บ้านของคุณ บางครั้งถ้าคุณมีgradle.propertiesในไดเรกทอรีบ้านมันใช้รายละเอียดจากที่นั่น คุณสามารถเปลี่ยนหรือลบไฟล์ได้ จากนั้นจะต้องใช้รายละเอียดที่จำเป็นจากโฟลเดอร์ท้องถิ่นของคุณ


1

หากคุณกำลังทำงานกับการลงชื่อแอพพลิเคชั่น Flutter ของคุณโดยทำตามคำแนะนำนี้สร้างและปล่อยแอพ Androidและเรียกใช้ข้อผิดพลาดนี้ ฉันหวังว่าคำตอบนี้จะช่วยคุณ

ในกรณีของฉันฉันเปลี่ยนเส้นทางเพื่อจัดเก็บ key.jks ของฉัน สิ่งนี้เกิดขึ้นกับฉันเพราะฉันมีไฟล์ที่มีอยู่ในเส้นทางนั้น

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

คำสั่งนี้เก็บไฟล์ key.jks ในโฮมไดเร็กทอรีของคุณ หากต้องการเก็บไว้ที่อื่นให้เปลี่ยนอาร์กิวเมนต์ที่คุณส่งไปยังพารามิเตอร์ -keystore

ในกรณีของฉัน

keytool -genkey -v -keystore /Users/Y/Desktop/X/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias keyYour

เช่นX - ชื่อผู้ใช้และY - ชื่อโฟลเดอร์

จากนั้นคุณจะได้รับแจ้งให้ป้อนรหัสผ่านที่เก็บคีย์: และป้อนรหัสผ่านใหม่อีกครั้ง: ที่นี่คุณสามารถใช้รหัสผ่านอะไรก็ได้ที่คุณต้องการ

อย่างไรก็ตามให้ไฟล์ keystore เป็นส่วนตัว อย่าตรวจสอบในการควบคุมแหล่งสาธารณะ!


0

การสรุปคำแนะนำจากหน้านี้ฉันทำตามขั้นตอนต่อไปนี้:

keytool -genkeypair -keystore ~/.android/release.keystore -alias <my_alias> -storepass <my_cert_pass> -keyalg RSA

จากนั้นฉันได้รับคำถามมากมายเกี่ยวกับชื่อองค์กรที่ตั้งและรหัสผ่านสำหรับนามแฝงของฉัน


0

ข้อผิดพลาด keytool: java.io.IOException: Keystore ถูกดัดแปลงหรือรหัสผ่านไม่ถูกต้อง

ฉันจะแก้ไขปัญหาของฉันเมื่อฉันเปลี่ยน keystore เส้นทางC: \ MyWorks \ mykeystoreเพื่อC: \ MyWorks \ mykeystore.keystore


1
เส้นทางแรก "C: \ MyWorks \ mykeystore" ไม่ใช่ที่เก็บคีย์
Jorgesys


0

ฉันแก้ไขปัญหานี้โดยการลบไฟล์เอาต์พุตและเรียกใช้คำสั่งอีกครั้ง ปรากฎว่าไม่เขียนทับไฟล์ก่อนหน้า ฉันมีปัญหานี้เมื่อต่ออายุใบรับรองการเข้ารหัสด้วย tomcat


0
 [root@localhost Certificate]# openssl pkcs12 -export -in 
 /opt/Certificate/115c99f4c5aa98f5.crt -inkey /opt/Certificate/ravi.in.key -certfile 
/opt/Certificate/gd_bundle-g2-g1.crt -out RaviNew.p12

Enter Export Password: <Password>
Verifying - Enter Export Password: <Password>

หมายเหตุ: -เหนือการส่งออก Pasworrd เขียนที่ใดก็ได้เพราะมันจะต้องสร้างไฟล์ JKS (ขึ้นอยู่กับทางเลือกของคุณว่าคุณต้องการรหัสผ่านใด)

  keytool -importkeystore -srckeystore DigiEduNew.p12 -srcstoretype pkcs12 -destkeystore finaldigiEdu.jks -deststoretype JKS
  Importing keystore DigiEduNew.p12 to finaldigiEdu.jks...
  Enter destination keystore password: <Any Password >
  Re-enter new password: <Any Password >
  Enter source keystore password: <.P12 Password >
  Entry for alias 1 successfully imported.
  Import command completed:  1 entries successfully imported, 0 entries failed or 
  cancelled



 Warning:
 The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 
 which is an industry standard format using "keytool -importkeystore -srckeystore 
 finaldigiEdu.jks -destkeystore finaldigiEdu.jks -deststoretype pkcs12".

0

สำหรับฉันฉันแก้ไขได้โดยเปลี่ยนรหัสผ่านจากตัวอักษรภาษาอาหรับเป็นตัวอักษรภาษาอังกฤษ แต่ก่อนอื่นฉันไปที่โฟลเดอร์และลบคีย์ที่สร้างขึ้นจากนั้นก็ใช้งานได้


0

ในกรณีของฉันกับ Xamarin Forms 4.7 และ Visual Studio 2019 16.7.0 แสดงตัวอย่าง 3.1 ปัญหาคือรุ่นที่ไม่ตรงกันของเครื่องมือสร้าง Build Android ล่าสุด (apksigner) และ JDK อัปเดต JDK เป็นล่าสุดและชี้เส้นทาง JDK ใหม่บนเครื่องมือ -> ตัวเลือก -> Xamarin-> การตั้งค่า Android และใช้งานได้

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