web-dev-qa-db-ja.com

pkcs12をyubikey pivスロットにアップロードする

私はid_rsa(スロット9aのyubikey piv smardcartプロバイダーの証明書と一緒に認証と暗号化に私が使用する秘密鍵)を持っています。この鍵を使用してpkcs12キーストア(秘密鍵+自己署名証明書)を作成し、署名しますyubikey pivの他のスロットを介したjarファイル(Android apk)

私はこの方法でpkcsストアを作成しました:

$ openssl req -new -key id_rsa -out server.csr 
$ openssl x509 -req -days 3650 -in server.csr -signkey id_rsa -out server.crt
$ openssl pkcs12 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -in server.crt -inkey id_rsa -out server.crt.p12 -name "Singnin cert"

そして私がそれらのpkcs12を(または個別のキー/証明書として)スロット9cにアップロードしようとすると:

キーと証明書をインポートし、以下のいずれかを実行します。

  • キーと証明書(PEM形式)をスロット9aにインポートします。

      $ yubico-piv-tool -s 9a -a import-key -i key.pem
      $ yubico-piv-tool -s 9a -a import-certificate -i cert.pem
    
  • 鍵と証明書(PKCS12形式)をスロット9aにインポートします。

      $ yubico-piv-tool -s 9a -a import-key -a import-cert -i key.p12 -K PKCS12
    

エラーが出る

Enter Password: 
Invalid public exponent for import (only 0x10001 supported)
Unable to import private key

ps。管理キーを使用します

id_rsaをpkcs8に変換するか、パスフレーズを削除しようとしました

誰かがこのエラーについて何を私に説明できますか?私はこれについてググるが運が悪い

私のidr_rsa

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,[some numbers I've cut]

YUBIKEY PIV証明書スロット

PIV対応のYubiKeyは、PIV標準ドキュメントで指定されているように、証明書用に4つの異なるスロットを保持しています。これらの各スロットは、X.509証明書とそれに付随する秘密鍵を保持できます。技術的にこれらの4つのスロットは非常によく似ていますが、異なる目的で使用されます。

スロット9a:PIV認証この証明書とそれに関連付けられた秘密鍵は、カードとカード所有者の認証に使用されます。このスロットは、システムログインなどに使用されます。エンドユーザーPINは秘密キー操作を実行するために必要です。PINが正常に提供されると、追加のカード所有者の同意なしに複数の秘密キー操作を実行できます。

スロット9c:デジタル署名この証明書とそれに関連付けられた秘密鍵は、ドキュメントの署名、またはファイルと実行可能ファイルへの署名を目的としたデジタル署名に使用されます。エンドユーザーPINは秘密鍵の操作を実行するために必要です。PINは、署名操作の直前に毎回送信する必要があります。デジタル署名が生成されました。

スロット9d:鍵管理この証明書とそれに関連する秘密鍵は、機密保持の目的で暗号化に使用されます。このスロットは、電子メールやファイルの暗号化などに使用されます。エンドユーザーPINは秘密キー操作を実行するために必要です。PINが正常に提供されると、追加のカード所有者の同意なしに複数の秘密キー操作を実行できます。

スロット9e:カード認証この証明書とそれに関連する秘密鍵は、PIV対応のドアロックを介して建物への物理的アクセスを提供するなど、追加の物理的アクセスアプリケーションをサポートするために使用されます。エンドユーザーPINは、このスロットの秘密キー操作を実行する必要はありません。

読みました:

https://crypto.stackexchange.com/questions/3110/impacts-of-not-using-rsa-exponent-of-65537

https://crypto.stackexchange.com/questions/10809/openssl-rsa-how-many-public-exponents-are-possible

RSA公開指数は、セキュリティ上の理由から、{3、5、17、257、または65537}のみにする必要がありますか?

https://stackoverflow.com/questions/10736382/what-does-e-is-65537-0x10001-mean

ps。私はtxtをダンプしています

$ openssl rsa -text -in id_rsa

そこには

publicExponent: 37 (0x25)

公開指数を0x10001に変更する方法はありますか?または、新しいキーを生成しますか?/すべての証明書を最初から作成しますか?

pS2。

私は可能性についてそのようなテキストを掘り出しましたが、それ以上の説明はありません

https://crypto.stackexchange.com/questions/30316/is-it-possible-to-correct-the-exponent-of-an-rsa-public-key-if-it-has-been-変更

5
ceph3us

https://crypto.stackexchange.com/questions/33728/uploading-pkcs12-to-yubikey-piv-slot のクロスポスト:そこはトピック外です。)理論的には、公開指数を変更することが可能です新しいeがp-1とq-1と互いに素である限りnを維持しますが、F4の場合はこの可能性が高くなります。しかし、これは新しいキーペアを生成するよりもはるかに多くの作業であり、それに加えてdoesは証明書を再生成する必要があります。

OpenSSHからssh-keygenを使用してRSA鍵ペアを生成したと思います。これは、e = 37を選択する唯一の一般的なツールであり、デフォルトでファイル名id_rsaになります。簡単な答えは、代わりにデフォルトでe = 65537別名F4(コマンドラインで)をOpenSSLでキーペアを生成することです。さらに、reqはキーペアの生成とCSRの作成を組み合わせることができます。また、CSRファイルを保持する必要がない限り、CSRをスキップして、-x509を追加することで直接自己署名証明書を生成することもできます。

openssl req -newkey RSA:bits -x509 -days 3650 -keyout privatekey -out server.crt
# proceed with PKCS12 conversion etc.

これをSSHに使用することを計画している場合、OpenSSHはe = 65537のRSAキーを完全に使用できることに注意してください。 生成しないだけです。

3