2016-05-10 13 views
5

Tôi có một ứng dụng Android (và kho khóa sản xuất) được tạo lần đầu tiên với Adobe Air. Từ lâu, công ty đã chuyển sang Android SDK thông thường để phát triển ứng dụng nhưng khi ứng dụng đã được sản xuất, kho khóa chúng tôi sử dụng vẫn là cùng một phiên bản (được tạo bởi Adobe Air).Kho khóa SHA1 khác với cert.rsa SHA1 từ APK

tôi đã sử dụng keytool để trích xuất các SHA1 cho API của Google Places, tôi có một cái gì đó dọc theo những đường:

Alias name: <alias_name> 
Creation date: Jan 11, 2015 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN=<company_name>, OU=, O=, C=US 
Issuer: CN=<company_name>, OU=, O=, C=US 
Serial number: <lotsofnumbers> 
Valid from: Mon Mar 28 14:08:17 IST 2011 until: Sat Mar 29 14:08:17 IDT 2036 
Certificate fingerprints: 
    MD5: ..:8D:F7 
    SHA1: ..:E6:69 
    SHA256: ..:38:9A 
    Signature algorithm name: SHA1withRSA 
    Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.37 Criticality=false 
ExtendedKeyUsages [ 
    codeSigning 
] 

SHA1 này (kết thúc bằng E6: 69) không bao giờ làm việc trong API của Google Places vì ​​vậy tôi đã kiểm tra những gì đã các CERT.RSA APK chứa và nó trông gần như giống nhau, ngoại trừ dấu vân tay Giấy chứng nhận:

Valid from: Mon Mar 28 14:08:17 IST 2011 until: Sat Mar 29 14:08:17 IDT 2036 
Certificate fingerprints: 
    MD5: ..:E1:30 
    SHA1: ..:72:74 
    SHA256: ..:9D:6D 
    Signature algorithm name: SHA1withRSA 
    Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.37 Criticality=false 
ExtendedKeyUsages [ 
    codeSigning 
] 

SHA1 này (kết thúc bởi 72:74) đã làm việc một cách hoàn hảo và cuối cùng tôi quản lý để sử dụng API của Google Places trong sản xuất. Nhưng tôi không hiểu tại sao hai dấu vân tay đó lại khác nhau.

Tôi chắc chắn 1000% đó là cùng một kho khóa, vậy làm thế nào điều này có thể xảy ra?

Khi tôi nhìn vào phím debug android các thông tin được cấu trúc theo cùng một cách nhưng Extensions là khác nhau:

Alias name: androiddebugkey 
Creation date: Oct 26, 2014 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN=Android Debug, O=Android, C=US 
Issuer: CN=Android Debug, O=Android, C=US 
Serial number: 3bddeb55 
Valid from: Sun Oct 26 21:03:56 IST 2014 until: Tue Oct 18 22:03:56 IDT 2044 
Certificate fingerprints: 
    MD5: ..:01:17 
    SHA1: ..:00:77 
    SHA256: ..:32:93 
    Signature algorithm name: SHA256withRSA 
    Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false 
SubjectKeyIdentifier [ 
KeyIdentifier [ 
0000: <weird hexa number and characters> 
0010: <weird hexa number and characters> 
] 
] 

Để tóm tắt câu hỏi của tôi:

  1. Làm thế nào có thể như vậy các SHA1 làm không khớp?
  2. Có thể là sự khác biệt Tiện ích mở rộng không?
  3. Làm cách nào để sử dụng công cụ khóa (hoặc công cụ khác) để hiển thị cho tôi SHA1 đúng?
  4. Tôi có thể loại bỏ Tiện ích ký mã này để quay lại "kho khóa Android bình thường" không?

Trả lời

2

Sử dụng phòng thu android bạn có thể nhận chìa khóa SHA1 theo cách sau

Chuyển đến Gradle tab ở phía bên phải của studio sau đó

Bấm projectname->: cấp ứng dụng> Tasks-> android-> signingReport (double click)

này sẽ in SHA1 và MD5 chủ chốt trên RUN console

+0

như xa như tôi biết, phương pháp này sẽ chỉ cho bạn thấy những SHA1 cho debug keystore – yogipriyo

2

Sẽ có 2 kho khóa. gỡ lỗi và phát hành. bạn đang sử dụng khóa gỡ lỗi tôi nghĩ.

Nếu bạn đang sử dụng bản phát hành. Kiểm tra apikey là chính xác trong cả hai gỡ lỗi và phát hành xmls. bởi vì thông thường bạn sẽ không thấy bản phát hành google xml.

Vì vậy, bạn đã tạo khóa Api chính xác nhưng bạn không đặt nó trong tệp xml phát hành.

4

Làm thế nào điều này có thể SHA1 không khớp?

SHA-1 giấy chứng nhận dấu vân tay được xác định bởi Keystore của bạn, có lẽ bạn đã đăng ký ứng dụng của bạn với một Keystore hoặc Keystore của bạn đã được sửa đổi hoặc được tạo ra một lần nữa, tôi đã có kinh nghiệm này bởi bản thân mình, với debug Keystore tôi.

Tôi có thể sử dụng keytool (hoặc công cụ khác) để hiển thị cho tôi SHA1 đúng như thế nào?

nhớ rằng khi bạn tạo ra một Keystore (có chứa một Giấy chứng nhận SHA-1 độc đáo) để đăng ứng dụng cho sản xuất, bạn phải giữ Keystore này ở nơi an toàn, và nó phải được sử dụng để đăng nhập bạn ứng dụng cho Google Playstore

Nếu SHA-1 của bạn (kết thúc bằng E6: 69) không bao giờ hoạt động trong API Google Địa điểm, có thể dấu vân tay chứng chỉ SHA-1 không được đăng ký trong https://console.developers.google.com/.

Ví dụ cho API Google Địa điểm, tôi cần đăng ký ứng dụng của mình với chứng chỉ SHA-1 của kho khóa gỡ lỗi của tôi (thường nằm ở C:\Users\[USER]\.android\debug.keystore) và bằng chứng chỉ SHA-1 của kho khóa sản xuất của tôi.

Đến Developer Bảng điều khiển Google của bạn https://console.developers.google.com/apis Ở đó bạn có thể xác định nhiều SHA-1 liên quan đến tên gói ứng dụng của bạn, ví dụ bạn có thể định nghĩa một cho gỡ lỗi Keystore của bạn và một cho sản xuất của bạn Keystore. enter image description here

Tôi có thể đặt cược rằng bạn đã đăng ký với keystores khác nhau vì họ có ngày sáng tạo khác nhau:

Creation date: Jan 11, 2015 
Creation date: Oct 26, 2014