公開/秘密鍵で暗号化してNASに保存するためにopensslを使用しようとしているログファイルはたくさんありますが、失敗します。
私のログファイルは次のパスにあります。
/var/SYSLOGS/hosts/archive
私の公開鍵と秘密鍵は次の場所にあります。/etc/log-enc/
[root@NAG01 log-enc]# ls -l
total 8
-rw-r--r-- 1 root root 891 Jul 11 15:58 syslog_privalye_key.pem
-rw-r--r-- 1 root root 272 Jul 11 15:59 syslog_public_key.pem
それでは、次のコマンドを実行しようとしています。同じコマンドを1つずつ実行しても問題ありません。
for file in `find /var/SYSLOGS/hosts/archive/`
do
FILE_BASE=$(basename $file)
echo "$file=>/NFS/Nag01/syslogs/hosts/$FILE_BASE.enc"
openssl rsautl -encrypt -inkey /etc/log-enc/syslog_public_key.pem -pubin -in $file -out /NFS/Nag01/syslogs/hosts/$FILE_BASE.enc
done
エラーログです
RSA operation error
140628568049480:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:151:
/var/SYSLOGS/hosts/archive/192.168.33.5.log-20160131.gz=>/NFS/Nag01/syslogs/hosts/192.168.33.5.log-20160131.gz.enc
RSA operation error
140123978278728:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:151:
/var/SYSLOGS/hosts/archive/app02.log-20160306.gz=>/NFS/Nag01/syslogs/hosts/app02.log-20160306.gz.enc
/var/SYSLOGS/hosts/archive/192.168.34.8.log-20160227.gz=>/NFS/Nag01/syslogs/hosts/192.168.34.8.log-20160227.gz.enc
RSA operation error
139777258493768:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:151:
/var/SYSLOGS/hosts/archive/192.168.31.3.log-20160511.gz=>/NFS/Nag01/syslogs/hosts/192.168.31.3.log-20160511.gz.enc
これが元のファイルです。
[root@NAG01 log-enc]# ls -l /var/SYSLOGS/hosts/archive/192.168.33.5.log-20160131.gz
-rw-------. 1 root root 3569 Jan 31 04:16 /var/SYSLOGS/hosts/archive/192.168.33.5.log-20160131.gz
[root@NAG01 log-enc]# ls -l /var/SYSLOGS/hosts/archive/192.168.34.8.log-20160227.gz
-rw-------. 1 root root 2142 Feb 27 03:11 /var/SYSLOGS/hosts/archive/192.168.34.8.log-20160227.gz
答え1
これは私にとって効果的です。
まず、キーを生成してください。
openssl req -x509 -nodes -newkey rsa:2048 -keyout private-key.pem -out public-key.pem
その後、同じループ
for file in `find /var/SYSLOGS/hosts/archive/`
do
FILE_BASE=$(basename $file)
echo "$file=>/NFS/Nag01/syslogs/hosts/$FILE_BASE.enc"
openssl smime -encrypt -binary -aes-256-cbc -in $file -out /NFS/Nag01/syslogs/hosts/$FILE_BASE.enc -outform DER public-key.pem
done
答え2
ファイルの暗号化には使用しないでくださいopenssl
。このために設計されていません。 (openssl
実際にはそうではありません。デザイン済み)あなたはただ暗闇の中でたどっているだけです。虎のケージ。
GnuPGファイル暗号化のために特別に設計されています。ディストリビューションからインストールしてください。gpg --gen-key
新しいキーを生成するために使用されます。キーはに保存されます~/.gnupg
。gpg --export
アカウントから公開鍵をエクスポートし、gpg --export-secret-keys
鍵をエクスポートし、gpg --import
別のアカウントにインポートするために使用されます。
ファイルを暗号化するにはを使用gpg -e /path/to/file
しますgpg /path/to/file.gpg
。
出力を解析しません。find
、使用find … -exec …
。変数とコマンドの置換には常に二重引用符を使用してください。現在、ファイルに特殊文字がない可能性がありますが、二重引用符を使用しても害はありません。
ディレクトリ暗号化を試みるなど、他の方法でスクリプトが破損し、偽のエラーが発生する可能性があります。スクリプトの外観で、サブディレクトリを見つけることを期待していないようです/var/SYSLOGS/hosts/archive/
。この場合は必要ありませんfind
。
cd /var/SYSLOGS/hosts/archive/ &&
for x in *; do
gpg -e -o "/NFS/Nag01/syslogs/hosts/$x.gpg" "$x"
done
サブディレクトリがある場合:
cd /var/SYSLOGS/hosts/archive/ &&
find . -type f -exec sh -c '
mkdir -p "${0%/*}" &&
gpg -e -o "/NFS/Nag01/syslogs/hosts/$0.gpg" "$0"
'