web-dev-qa-db-ja.com

x509.pem pk8ファイルをjks-keystoreにインポートする方法は?

私はすでにコマンドを使おうとしました

keytool -import -keystore *.jks -alias alias_name -keypass alias_passwd -file *.x509.pem` (no *.pk8 file)

しかし、私がjksを使用してAPKに署名すると、

trusted certificate entries are not password-protected

エラーが発生します。

12
Fang
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt

openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name Android

keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass Android -alias Android
15
Fang

牙の答えは正しいが、説明が不足していた。私はそれを理解するためにいくつかのことを理解する必要がありました、そして私が私の経験から得たすべてを100%確信しているわけではありませんが、それが人々を助けることができると確信しています。

事前に、opensslとkeytoolがインストールされ、PATHに追加されていることを確認してください。そうしないと、もちろんコマンドが機能しません。

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt

これにより、pk8ファイルから「platform.priv.pem」というファイルが生成されます。

openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name {{KEY_ALIAS}}

これにより、「platform.x509.pem」ファイルと以前に生成された「platform.priv.pem」の両方を使用して「platform.pk12」ファイルが生成されます。キーエイリアスは指定した文字列値であり、任意の値にすることができますが、覚えておく必要があります。

このコマンドを入力すると、パスワード(およびパスワードの確認)の入力を求められます。このパスワードは自分で定義します。それはあなたの「鍵パスワード」になります、そしてもちろん、あなたもそれを覚える必要があります。

keytool -importkeystore -destkeystore {{STORE_FILE_NAME}}.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass {{KEY_PASSWORD}} -alias {{KEY_ALIAS}}

最後のコマンドは、実際には次の2つのいずれかを実行します。
-指定されたjksファイルがすでに存在する場合、指定されたエイリアスを持つキーをインポート(または存在する場合はオーバーライド)します
-ファイルがまだ存在しない場合は、新しいjksファイルが作成され、指定されたエイリアスでキーがインポートされます。
とにかく、コマンドは以前に定義されたキーパスワードとキーエイリアスを取り込みます。

コマンドを入力すると、sotreパスワードの入力を求められます。既存のjksファイルの場合は、既存のストアパスワードを指定する必要があります。それ以外の場合は、それを定義し、もう一度、与えた値を監視します。

1日の終わりに、4つの値を定義しました。
-キーエイリアス
-キーパスワード
-パスワードを保存する
-ファイル名を保存する

そして、それはまさにあなたのAndroidプロジェクトのgraddleファイルがあなたのAPKに署名する必要があるものです:

ファイル:[Androidプロジェクトルート] /app/build.graddle

[...]
Android {
    [...]
    signingConfigs {
        release {
            storeFile file("{{STORE_FILE_PATH*}}/{{STORE_FILE_NAME}}.jks")
            storePassword "{{STORE_PASSWORD}}"
            keyAlias "{{KEY_ALIAS}}"
            keyPassword "{{KEY_PASSWORD}}"
        }
    }
    [...]
}
[...]

*:jksファイルは、バージョン管理のためだけでなく、単純化のためにも、おそらくプロジェクト内に配置する必要があります。 build.graddleの場所からの相対パスを指定します。

お役に立てれば !

2
Dorian Fusco

keytool-importkeypairがすでに存在するキーストアでのみ機能することを考えると、この他のバージョンのスクリプトを使用できます。これは、を作成してインポートすることで機能します。 新しいキーストアのx509.pemおよび.pk8。

ここでスクリプト platform_import_keystore

1
VelocityPulse