OpenSSL을 사용하여 Outlook 사용자를위한 암호화 키 생성


1

개인 웹 응용 프로그램은 20 명의 알려진 사용자로부터 암호화 된 전자 메일을 받아야합니다. OpenSSL을 사용하여 Outlook 사용자가 내 앱에 연결된 전자 메일 주소로받은 후 해독 할 수있는 전자 메일을 가져 와서 암호화 할 수있는 유효한 암호화 인증서를 생성하려면 어떻게해야합니까?

이를 위해 @logicalscope의 답변 에서이 다른 게시물에 대한 코드를 사용하기 시작했습니다.이 코드는 다음과 같이 요약됩니다.

$ openssl genrsa -aes128 -out email.key 2048
$ openssl req -new -key email.key -out email.csr -config email.cnf
$ openssl x509 -req -days 365 -in email.csr -CA ca.crt -CAkey ca.key -set_serial 10 -out email.crt
$ openssl pkcs12 -export -in email.crt -inkey email.key -out email.pfx  

어디 email.cnf로 이전 단계의 사전에 생성됩니다 :

[ req ]
default_bits           = 2048
distinguished_name     = req_distinguished_name
prompt                 = no

[ req_distinguished_name ]
C                      = {Country}
ST                     = {Provice/State}
L                      = {City}
O                      = {Org}
OU                     = {Org Unit}
CN                     = user@domain.com
emailAddress           = user@domain.com  

문제는 위의 코드가 어디를 찾아야하는지 모른다는 것입니다 ca.crt. 따라서이 줄의 openssl x509 -req -days 365 -in email.csr -CA ca.crt -CAkey ca.key -set_serial 10 -out email.crt결과는 다음과 같습니다.

Signature ok
subject=/C=US/ST=CA/L=MyCity/O=MyOrganization/OU=MyUnit/CN=me@serverdomain.com/emailAddress=me@serverdomain.com
Error opening CA Certificate ca.crt
140570916620192:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('ca.crt','r')
140570916620192:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
unable to load certificate

ca.crtOutlook 사용자가 email.pfx수신시 앱이 해독 할 수있는 전자 메일을 암호화하는 데 사용할 수있는 방법으로 유효한 것을 생성 하려면 어떻게해야합니까? 인증서를 구매해야합니까? 이것은 현재 개발 서버 전용입니다. 무료로 작동하는 것을 얻는 것이 좋을 것입니다. 예를 들어 Thunderbird 사용자는 내 앱에서 해독 할 수있는 GPG 키로 암호화 된 이메일을 보낼 수 있습니다.

내 devbox에서 Windows 7 및 Outlook 2010을 실행 중입니다.

답변:


1

아래 스크립트는 인증 기관 (CA)과 이메일 인증서를 생성합니다. 이메일 인증서는 생성 된 CA에 의해 서명됩니다. 위에서 제공 한 email.cnf 용 템플릿을 사용했습니다. 암호화를 4096 비트 RSA 키, SHA256 및 AES256으로 업그레이드했습니다. 또한 항목을 변경해야하는 모든 장소는 <>로 둘러싸여 있습니다. 스크립트를 실행할 때 로컬 비밀번호를 묻습니다.

#!/bin/sh
RSA_size=4096
Certauth_key=ca.key 
Certauth_crt=ca.crt
Key_name=email.key
CSR_name=email.csr
Config_file=email.cnf
Lifespan_in_days=365
Serial_number_CA=<Serial number you want to use>
Serial_number_leaf=<Serial number you want to use>
CRT_name=email.crt
Email_PFX_name=email.p12
Frendily_name=MyEmailKey
Passphrase=<password you want to use>
PasswordPhrase=pass:$Passphrase

echo openssl genrsa -aes256 -out $Certauth_key $RSA_size
openssl genrsa -aes256 -out $Certauth_key $RSA_size

echo openssl req -new -x509 -set_serial $Serial_number_CA -days $Lifespan_in_days -config $Config_file -key $Certauth_key -out $Certauth_crt
openssl req -new -x509 -set_serial $Serial_number_CA -days $Lifespan_in_days -config $Config_file -key $Certauth_key -out $Certauth_crt



echo openssl genrsa -aes256 -out $Key_name $RSA_size
openssl genrsa -aes256 -out $Key_name $RSA_size 

echo openssl req -new -key $Key_name -out $CSR_name -config $Config_file 
openssl req -new -key $Key_name -out $CSR_name -config $Config_file 

echo openssl x509 -req -sha256 -days $Lifespan_in_days -in $CSR_name -CA $Certauth_crt -CAkey $Certauth_key -set_serial $Serial_number_leaf -out $CRT_name -setalias $Frendily_name -clrtrust -addtrust emailProtection -addreject clientAuth -addreject serverAuth -trustout
openssl x509 -req -sha256 -days $Lifespan_in_days -in $CSR_name -CA $Certauth_crt -CAkey $Certauth_key -set_serial $Serial_number_leaf -out $CRT_name -setalias $Frendily_name -clrtrust -addtrust emailProtection -addreject clientAuth -addreject serverAuth -trustout

echo openssl pkcs12 -export -aes256 -in $CRT_name -inkey $Key_name -out $Email_PFX_name -name $Frendily_name -passout $PasswordPhrase
openssl pkcs12 -export -aes256 -in $CRT_name -inkey $Key_name -out $Email_PFX_name -name $Frendily_name -passout $PasswordPhrase 

Thunderbid에서는 먼저 CA를 신뢰할 수있는 기관으로 가져온 다음 서명을 위해 인증서 아래의 이메일 인증서를 가져와야합니다. 해당 인증서가 신뢰할 수있는 CA에 연결되지 않은 경우 서명 된 전자 메일에 암호화 된 회신을 보내려고 할 때도 마찬가지입니다. 따라서 상대방이 Thunderbird를 사용하는 경우 ca.crt를 보내야합니다. 다른 사람에게 전자 메일을 암호화하는 경우 메시지를 보내려면 먼저 .crt (체인의 모든 .cer)가 필요합니다. 인증서를 명시 적으로 신뢰하는 경우 Outlook에서 서명 된 메일에 회신 할 때 필요하지 않습니다.

Thunderbird의 디지털 서명 및 암호화 상자에 키를 배치하면 여전히 이상한 오류가 발생합니다. 그럼에도 불구하고 한 번에 두 계정이 아닌 다른 계정으로 서명 및 암호화 된 메일을 보낼 수 있습니다. 또한 Thunderbird에서 CA를로드 할 때 SSL 서명에 CA를 사용할 수 있다는 메시지가 표시됩니다. 앞으로 언젠가 레이블이 그렇게 말하는 이유를 알아 내야합니다.

이 코드는 Windows 10 빌드 1057에서 실행되는 Cygwin 2.2.1 (0.289 / 5 / 3)에서 OpenSSL 1.0.2d 2015 년 7 월 9 일에 사용되었습니다. 암호화 및 서명 된 메시지를 보내는 Thunderbird (38.8.0)를 사용하여 Gmail 계정으로 테스트했습니다. Outlook 15.0.4.4753.1002를 사용하여 Microsoft 호스팅 교환 서비스에


이 오래된 질문에 대해 시간을내어 주셔서 감사합니다. 지금 답변을 확인할 수 없습니다. 그러나 나는 이것을 다시 방문 할 준비가되었을 때 귀하의 답변을 참조 할 수 있도록이 질문에 북마크했습니다.
CodeMed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.