2011-08-05 5 views
1

웹에서 검색했지만 답변을 찾을 수 없어서 여기에서 찾을 수 있기를 바랍니다.웹 브라우저를 통한 Gpg 암호화

Windows에서 실행되는 웹 응용 프로그램과 Perl로 작성된 IIS가 있습니다. 스크립트 중 하나는 여러 작업을 수행합니다. 그 중 하나는 파일 암호화 명령을 실행합니다. 다음은 명령입니다.

my $cmd = "c:\\gnupg\\pub\\gpg -ase --always-trust --batch --passphrase mypassphrase --output $filename.pgp -r stuff $filename"; 

qx/$cmd/; 

불행히도 이것은 작동하지 않습니다. 내가 오류는 다음과 같습니다

gpg: no default secret key: No secret key gpg: C:\\Dev\\somefile.csv: sign+encrypt failed: No secret key 

나는 그것이 잘 작동 CMD에서 같은 서버에 같은 명령을 실행하려합니다.

웹에서 스크립트를 실행할 때 익명 사용자로 실행됩니다. 따라서 로컬 사용자로 생성 된 secrey 키가 보이지 않습니다. cmd를 통해 로컬에서 명령을 실행하면 로컬 사용자로 실행되므로 비밀 키가 표시됩니다.

질문은 : 어떻게이 문제를 해결하고 스크립트를 작동하게합니까?

, 감사합니다

-Andrey

+1

웹 서버 사용자의 홈 디렉토리가 어디에 있는지 살펴보고 비밀 키 (및 나머지 구성 데이터)를 올바른 위치에 놓습니다. –

답변

2

나는 마침내이 문제를 해결하는 방법을 알아 냈어.
내가 한 방식은 다음과 같습니다.
1. 공개 키와 비밀 키를 모두 로컬 사용자로 내 보냅니다.
2. 웹 펄 스크립트를 사용하여 공개 키를 가져옵니다.
my $ cmd = "c : \ gnupg \ pub \ gpg --import c : \ public.key";
qx/$ cmd /;
3. 동일한 작업을 수행하여 비밀 키를 가져옵니다.

웹 서버 사용자가 키를 만들 수 있도록 각 키에 대해 스크립트를 한 번 실행해야합니다.
그 후 내 응용 프로그램이 완벽하게 작동하기 시작했습니다!

0

명령을 실행하기 전에 GNUPGHOME 환경 변수를 대신 사용할 수 있습니다.

GNUPGHOME=C:\\Users\\myUser\\.gnupg\\ 
my $cmd = "c:\\gnupg\\pub\\gpg -ase --always-trust --batch --passphrase mypassphrase --output $filename.pgp -r stuff $filename"; 

qx/$cmd/;