回答:
秘密鍵を取得できました。しかし、それは簡単ではありませんでした。必要なことは次のとおりです。
ソースコードを抽出し、9行目を調整Makefile.main
して読み取ります。
$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
($(OBJS)
と$(LDFLAGS)
は順番が逆になっていることに注意してください。)
./build.sh
。以下を使用してApacheのPIDを取得します。
service apache2 status
passe-partout
ルートとしてコマンドを実行します。
sudo passe-partout [PID]
... [PID]
は、ステップ5で取得した値です。
プログラムが成功すると、現在のディレクトリに追加のキーがたくさんあります。
you@server:~# ls
id_rsa-0.key id_rsa-1.key id_rsa-2.key
すべてがうまくいけば(そしてうまくいけば)、それらのキーの1つが必要なキーです。ただし、使用中の証明書/キーファイルが複数ある場合は、それがどれであるかを把握する必要があります。その方法は次のとおりです。
まず、署名されたキーと一致する証明書のコピーを取得します。ファイルの名前がserver.crt
であると仮定して、次のコマンドを実行します。
openssl x509 -noout -modulus -in server.crt | openssl md5
これにより、各キーと照合する必要がある値が出力されます。キーごとに、次のコマンドを実行します。
openssl rsa -noout -modulus -in id_rsa-0.key | openssl md5
それらのいずれかが一致する場合、キーが見つかりました。
クレジット: この記事は私にpasse-partoutを示しました。
最も可能性が高いのは、メモリにキーを保存していることです。これは、権限を落としたり、指定されたパスフレーズを使用してキーを解読した後にコピーを保持する必要があるためです。
理論的には、デバッガをアタッチするとプロセスイメージから取得できますが、ベストプラクティスに従っている場合は、メモリ内の何かに対して暗号化されます。
とはいえ、それがまだ開いている場合は、そう/proc/${PID}/fd/${SOMETHING}
かもしれません。上書きした場合、データが上書きされるため、キーは存在しません。その場所に何か他のものをコピーした(または削除またはリンク解除した、またはその親ディレクトリを再帰的に削除した)場合、そこにあります。
cp
古いものの代わりに新しいキーをコピーします。
/proc
...何もありません。