たのしい工学

プログラミングを学んで、モノをつくりたいひと、効率的に仕事をしたい人のための硬派なブログになりました

パスワードを平文ではなく暗号化する

   

たとえばopensslを用いれば、パスワードを平文保存せずに済みます。

パスワードありの秘密鍵を作成する場合

$ ssh-keygen -f “秘密鍵ファイルの名称”

Enter passwordを入力すればOK 秘密鍵を利用するときにPWを聞かれます

パスワードなしの秘密鍵を作成する場合

$ ssh-keygen -f “秘密鍵ファイルの名称” 

Enter passwordを空のままでEnter

-f オプション付きで実行すると、鍵はカレントディレクトリに保存されます

$ ssh-keygen 

とだけ実行すると、~/.ssh/id_rsaのようにデフォルトでホームディレクトリの.sshディレクトリ内にid_rsaが作成されます。この場合秘密鍵に名前指定は不要です。

以降は、$ ssh-keygenで秘密鍵を作成したものとして話をすすめます

上記で作成した秘密鍵で平文パスワードを暗号化する

文字列foo(パスワード)を秘密鍵で暗号化し、暗号化文字列ファイルpw.rsaを作成

$ echo "foo" | openssl rsautl -encrypt -inkey ~/.ssh/id_rsa  >  pw.rsa
($ echo "暗号化したい文言" | openssl rsautl -encrypt -inkey file/path/to/秘密鍵  >  暗号化文字列ファイル)

暗号化文字列ファイルpw.rsa を復号し標準出力に表示するには下記

$ openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in pw.rsa

つまり、任意のスクリプトファイルのパスワードを格納している変数Passwordに (例:シェルスクリプトの場合)

Password=$(openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in pw.rsa)

とすれば、パスワードの平文記述をせずに済みます

以上

 - プログラミング系 ,