0

P12 ファイルを PEM ファイルに変換しようとしています。コマンドを実行すると、ターミナルは次の 3 つのことを尋ねてきます。

P12 パスフレーズ (入力して Enter キーを押します)
PEM パスフレーズ (入力して Enter キーを押します)
PEM パスフレーズを確認します (入力して Enter キーを押します)

次を使用して、sudoコマンドを一度に実行できることを知っています。

echo sudopassword | sudo rm -rf /file.p12;

3 つの値すべてを 1 回で追加するにはどうすればよいですか? ありがとう

4

4 に答える 4

1

これらのP12ファイルとは何か説明できますか?を使用したpkcs12Cert/keyファイルの.PEM形式への変換を扱うこのリンクを見つけましopensslた。(http://gridsite.org)

答えの鍵は次のとおりです。

無人処理に使用-passin file:...します-passout file:...

-passin file:P12passphraseこの場合、と-passout file PEMpassphraseオプションを指定する必要があると思います。

この小さなテストでは、入力パスフレーズをfile:<...>パラメーターで指定する方法を確認します。これは、肩越しの攻撃からそのようなフレーズを隠すのに役立ちます。そのようなファイルへのアクセスを制限することを忘れないでください。これはほとんどのopensslコマンドの一般的な機能ですが、明示的には言及されておらず、元の質問の鍵となります。オプションの完全なリストは以下のとおりです。

$ openssl pkcs12 -passin file:P12phrase
Can't open file P12phrase
Error getting passwords

(完全なコマンドを作成するのはOPに任せます。)

pkcs12以下は、サブコマンドでサポートされているすべてのオプションです。

$ openssl pkcs12 help 
Usage: pkcs12 [options]
where options are
-export       output PKCS12 file
-chain        add certificate chain
-inkey file   private key if not infile
-certfile f   add all certs in f
-CApath arg   - PEM format directory of CA's
-CAfile arg   - PEM format file of CA's
-name "name"  use name as friendly name
-caname "nm"  use nm as CA friendly name (can be used more than once).
-in  infile   input filename
-out outfile  output filename
-noout        don't output anything, just verify.
-nomacver     don't verify MAC.
-nocerts      don't output certificates.
-clcerts      only output client certificates.
-cacerts      only output CA certificates.
-nokeys       don't output private keys.
-info         give info about PKCS#12 structure.
-des          encrypt private keys with DES
-des3         encrypt private keys with triple DES (default)
-aes128, -aes192, -aes256
              encrypt PEM output with cbc aes
-nodes        don't encrypt private keys
-noiter       don't use encryption iteration
-maciter      use MAC iteration
-twopass      separate MAC, encryption passwords
-descert      encrypt PKCS#12 certificates with triple DES (default RC2-40)
-certpbe alg  specify certificate PBE algorithm (default RC2-40)
-keypbe alg   specify private key PBE algorithm (default 3DES)
-keyex        set MS key exchange type
-keysig       set MS key signature type
-password p   set import/export password source
-passin p     input file pass phrase source
-passout p    output file pass phrase source
-engine e     use engine e, possibly a hardware device.
-rand file:file:...
              load the file (or the files in the directory) into
              the random number generator
-CSP name     Microsoft CSP name
-LMK          Add local machine keyset attribute to private key
于 2012-08-11T23:41:25.623 に答える
0

これらのコマンドがstdinから読み取っている可能性は低いです。彼らは端末から直接読んでいる可能性が高いです。これにより、パスワードを画面にエコーしないモードを設定できます。入力をにエコーしてみてください/dev/tty

それを超えて、これらを制御するためにexpect / pexectのようなものを使用する必要があります。これらのプロジェクトは、この目的のために特別に構築されました。


OpenSSLには、stdinからの入力を読み取るための-stdinオプトインがあります。これは機能します:

tmp=`mktemp`
cat > $tmp <<EOF                                                                                       







$1                                                                                      

EOF                                                                                     
cat $tmp | openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key 

コマンドラインにパスワードを設定しないように、catとヒアドキュメントを使用しました。

于 2012-08-11T23:44:00.940 に答える
-1

3行だけエコーしてみましたか?それはおそらくうまくいくでしょう

echo $'P12 passphrase\nPEM passphrase\nPEM passphrase confirm' | cmd

ただし、このようなパスワードのエコーは非常に安全ではないことを指摘しなければならないと思います. パスワードは最終的に bash 履歴ファイルに記録されるだけでなく、システム上で を実行している他のユーザーにも表示されますps

于 2012-08-11T04:11:47.887 に答える