Шифрування пошти в outlook 2018, savepearlharbor

X.509 (файл з розширенням * .cer) - формат сертифіката, який крім загальної інформації (версія, серійний номер, алгоритм підпису, відомості про видавця, термін дії, відомості про власника, електронний відбиток) містить ваш відкритий ключ. Його ми відправляємо іншим користувачам, з якими хочемо обмінюватися зашифрованими повідомленнями.

PKCS # 12 (файл з розширенням * .pfx) - єдиний формат сертифіката, який крім загальної інформації може містити не тільки відкритий, але і закритий ключ. З його допомогою ми будемо розшифровувати повідомлення, зашифровані іншими користувачами за допомогою нашого відкритого ключа, а також ставити свою цифровий підпис.

Сертифікати створимо за допомогою програми для шифрування CyberSafe. яка може працювати в якості Центру Сертифікації. Кореневий сертифікат CyberSafe Certification Authority автоматично додається в Довірені в сховище Windows, сертифікат PKCS # 12 буде зберігатися в розділі Особисті. а X.509 в розділі Інші користувачі.

Спочатку створимо персональний сертифікат. що містить вищевказані сертифікати, відкритий і закритий ключі, а також іншу інформацію. Запускаємо програму, переходимо на вкладку Ключі та сертифікати. вибираємо Створити. заповнюємо необхідні поля і натискаємо Далі:

Шифрування пошти в outlook 2010 savepearlharbor

Тепер експортуємо необхідні нам для роботи з Outook сертифікати в окремі файли:

Сертифікати в CyberSafe створюються на основі бібліотеки OpenSSL, код створення сертифіката наведено нижче:

procedure TOpenSSL.CreateSignedCert (const FileName: String; OutFiles: TStringList;
const Password: String;
ValidDays: Integer; KeySize: Integer; const ExtendedKeyUsage: String;
const CommonName, Email, Organization, OrganizationalUnit, Country: String;
const CAFileSpec, CAPFXFileSpec, CAPrivateKeyPassword: String;
ARandomFileSpec: String = ";
ProgressProc: TProgressProc = nil; LogMsgProc: TLogMsgProc = nil);
var
TmpPrivateKeyFileSpec, TmpPublicKeyFileSpec: String;
TmpCerFileSpec, TmpPfxFileSpec, TmpCsrFileSpec, TmpCASerialFileSpec, TmpExtFileSpec, TmpPemFileSpec: String;
TmpCAPrivateKeyFileSpec: String;
Subj: String;
TempDir: String;
Aborted: Boolean;
WasError: Boolean;
OutPublicKeyFileSpec: String;
begin
WasError: = True;
TempDir: = GetTempDir;
try
CheckIsFileExists (CAFileSpec);

// Витягуємо приватний ключ з кореневого сертифіката
TmpCAPrivateKeyFileSpec: = TempDir + ChangeFileExt (ExtractFileName (CAPFXFileSpec), ") + '.privateKey.pem';
ExportPrivateKeyFromPfx (CAPFXFileSpec, TmpCAPrivateKeyFileSpec, CAPrivateKeyPassword);

// Все файли створюємо в тимчасовому каталозі, і тільки після успішного створення всіх - // переносимо на місце постійного зберігання
TmpPrivateKeyFileSpec: = TempDir + FileName + '.privateKey.pem';
TmpPublicKeyFileSpec: = TempDir + FileName + '.publicKey.pem';
TmpCerFileSpec: = TempDir + FileName + '.cer';
TmpPemFileSpec: = TempDir + FileName + '.pem';
TmpPfxFileSpec: = TempDir + FileName + '.pfx';
TmpCsrFileSpec: = TempDir + FileName + '.csr';
TmpCASerialFileSpec: = TempDir + FileName + '.srl';

Subj: = GetSubj (CommonName, Email, Organization, OrganizationalUnit, Country);

Aborted: = False;
if Assigned (ProgressProc) then
ProgressProc (13, 4, Aborted, Format ( '% s (.% S) ...', [StKeysGenerate, KeySize, StBit]));
if Aborted then
Exit;

CreatePrivateKey (TmpPrivateKeyFileSpec, TmpPublicKeyFileSpec, KeySize, ARandomFileSpec);

if Assigned (ProgressProc) then
ProgressProc (13, 5, Aborted, Format ( '% s ... ", [StGenerateCertificate]));
if Aborted then
Exit;

if Assigned (ProgressProc) then
ProgressProc (13, 6, Aborted, Format ( '% s ... ", [StCreateCertificateRequest]));

// Створюємо запит - .csr
RunOpenSSLConsole (Format (
'Req -new -key "% s" -out "% s" -days. -subj% s ',
[TmpPrivateKeyFileSpec, TmpCsrFileSpec, ValidDays, Subj]
), True, nil, nil);

if Assigned (ProgressProc) then
ProgressProc (13, 7, Aborted, Format ( '% s ... ", [StCreateExtensionsFile]));

// www.openssl.org/docs/apps/x509v3_config.html
TmpExtFileSpec: = StrToFile (
// 'keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign' +
'KeyUsage = digitalSignature, keyEncipherment' +
iif (ExtendedKeyUsage <> », # 13 # 10'extendedKeyUsage = '+ ExtendedKeyUsage,»),
TempDir + FileName + '.extensions.cfg'
);

if Assigned (ProgressProc) then
ProgressProc (13, 8, Aborted, Format ( '% s ... ", [StCreateSignedCertificate]));

// На основі запиту створюємо сертифікат, підписаний кореневим сертифікатом
RunOpenSSLConsole (Format (
'X509 -req -days. -passin pass:% s -in "% s" -CAform DER -CA "% s" -CAkey "% s" -CAserial "% s" -CAcreateserial -out "% s" -outform DER -extfile "% s" ',
[ValidDays, Password, TmpCsrFileSpec, CAFileSpec, TmpCAPrivateKeyFileSpec, TmpCASerialFileSpec, TmpCerFileSpec, TmpExtFileSpec]
), False, nil, nil);

// Конвертуємо cer => pem для наступної крманди експорту в pfx
RunOpenSSLConsole (Format (
'X509 -in "% s" -inform DER -out "% s" -outform PEM',
[TmpCerFileSpec, TmpPemFileSpec]
), False, nil, nil);

if Assigned (ProgressProc) then
ProgressProc (13, 10, Aborted, Format ( '% s ... ", [StCreatePFX]));

// Робимо pfx з отриманого pem і ключів
RunOpenSSLConsole (Format (
'Pkcs12 -password pass:% s -export -in "% s" -inkey "% s" -name "% s" -out "% s"',
[Password, TmpPemFileSpec, TmpPrivateKeyFileSpec, FileName, TmpPfxFileSpec]
), False, nil, nil);

OutPublicKeyFileSpec: = TmpPublicKeyFileSpec + '.signed';

ExportPublicKeyFromPfx (TmpPfxFileSpec, OutPublicKeyFileSpec, Password);

// А результат додаємо до списку файлів
OutFiles.Add (TmpCerFileSpec);
OutFiles.Add (TmpPfxFileSpec);
OutFiles.Add (TmpPrivateKeyFileSpec);
OutFiles.Add (TmpPublicKeyFileSpec);
OutFiles.Add (OutPublicKeyFileSpec);

WasError: = False;
finally
// Видаляємо тимчасові файли
if WasError then
begin
CheckDeleteFile (TmpCerFileSpec);
CheckDeleteFile (TmpPfxFileSpec);
CheckDeleteFile (TmpPrivateKeyFileSpec);
CheckDeleteFile (TmpPublicKeyFileSpec);
CheckDeleteFile (OutPublicKeyFileSpec);
end;

CheckDeleteFile (TmpCsrFileSpec);
CheckDeleteFile (TmpCASerialFileSpec);
CheckDeleteFile (TmpExtFileSpec);
CheckDeleteFile (TmpPemFileSpec);
CheckDeleteFile (TmpCAPrivateKeyFileSpec);
end;
end;

Встановимо експортований сертифікат у форматі PKCS # 12 в сховище Windows. Для цього двічі натискаємо на pfx-файлі і слідуємо інструкції Майстра імпорту сертифікатів. Так як цей сертифікат містить ваш закритий ключ, в процесі імпорту буде потрібно ввести пароль, який був зазначений при його створенні.

  • Шифрувати вміст і вкладення вихідних повідомлень
  • Додавати цифровий підпис до вихідних повідомлень

Тепер зі списку встановлених в сховище сертифікатів потрібно вибрати той, який буде використовуватися для шифрування і створення цифрового підпису. Для цього тут же натискаємо Параметри ...> Вибрати і вибираємо свій сертифікат:

Шифрування пошти в outlook 2010 savepearlharbor

На цьому, в принципі, все :). Однак давайте переконаємося в тому, що у нас все працює правильно і виконаємо перевірку шифрування "на себе".

Шифрування пошти в outlook 2010 savepearlharbor

У провіднику Windows знаходимо свій сертифікат у форматі * .cer

Шифрування пошти в outlook 2010 savepearlharbor

Шифрування пошти в outlook 2010 savepearlharbor

Відправляємо лист. Переходимо до вхідних і знаходимо там відправлене нами повідомлення. Воно зашифровано, про що свідчить іконка з синім замочком у верхньому лівому кутку. Кількома на ньому мишею, щоб автоматично розшифрувати і відкрити.

Якщо відправлений лист не відображається у вхідних, перейдіть на вкладку Відправка і отримання і натисніть Оновити папку.

Шифрування пошти в outlook 2010 savepearlharbor

Шифрування пошти в outlook 2010 savepearlharbor

Перевірка функції шифрування "на себе" виконана.

Тепер відправляємо повідомлення, завірене своїм цифровим підписом, іншим користувачам і отримуємо їх підписані повідомлення. Це дозволить нам обмінятися відкритими ключами один з одним, оскільки підписаний лист містить відкритий ключ.

Якщо у вас ще немає сертифіката (і відкритого ключа кореспондента), при відправці йому першого повідомлення функцію шифрування слід відключити, інакше Аутлук не зможе його зашифрувати і видаватиме помилку. Відключити функцію шифрування, залишивши включеною функцію цифрового підпису можна на вкладці Параметри:

Шифрування пошти в outlook 2010 savepearlharbor

Якщо відкритий ключ скачується з не довіреної сервера або ви отримуєте його по електронній пошті, не можна бути точно впевненим в автентичності такого ключа. Може виявитися так, що це зловмисник відправив вам замість ключа вашого друга свій «фальшивий» ключ. Тоді він зможе прочитати все зашифровані повідомлення, які ви відправляєте своєму другові, а ось ваш друг зробити цього не зможе.

Схожі статті