Outlook 2010 рдореЗрдВ рдИрдореЗрд▓ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди

рдЖрдЙрдЯрд▓реБрдХ 2010 рдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдкреЛрд╕реНрдЯ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдЙрдЯрд▓реБрдХ рдореЗрдВ рдореЗрд▓ рдХрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рджреМрд░рд╛рди, рджреЛ рдкреНрд░рд╛рд░реВрдк PKCS # 12 рдФрд░ X.509 рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

X.509 (* .cer рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╛рдЗрд▓) рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рд░реВрдк рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА (рд╕рдВрд╕реНрдХрд░рдг, рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдкреНрд░рдХрд╛рд╢рдХ рдЬрд╛рдирдХрд╛рд░реА, рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐, рд╕реНрд╡рд╛рдореА рдЬрд╛рдирдХрд╛рд░реА, рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдкрдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИред рд╣рдо рдЗрд╕реЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

PKCS # 12 (* .pfx рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓) рдПрдХрдорд╛рддреНрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рд░реВрдк рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рди рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдирд┐рдЬреА рдХреБрдВрдЬреА рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрдкрдиреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЕрдкрдиреЗ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рднреА рдбрд╛рд▓реЗрдВрдЧреЗред

рд╣рдо рд╕рд╛рдЗрдмрд░ рдХреИрдлреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдЗрдмрд░ рдХреИрдлреЗ рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдЯреНрд░рд╕реНрдЯреЗрдб рдЯреНрд░рд╕реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, PKCS # 12 рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ X.509ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рдХреБрдВрдЬреА, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдпреБрдХреНрдд рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдПрдВред рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдВрдЬреА рдФрд░ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ, рдмрдирд╛рдПрдВ рдЪреБрдиреЗрдВ, рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ рдФрд░ рдЕрдЧрд▓рд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:



рдЪрд╛рдмрд┐рдпрд╛рдБ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛рдПрдВрдЧреА, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рдж рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕рд╛рдЗрдмрд░ рдХреИрдлреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдВ рдЖрдкрдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред

рдЕрдм рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдЙрдЯреВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:



рд╕рд╛рдЗрдмрд░рд╕реНрдкреЗрд╕ рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдХреЛрдб рджреЗрдЦреЗрдВ
рдкреНрд░рдХреНрд░рд┐рдпрд╛ TOpenSSL.CreateSignedCert (const FileName: String; OutFiles: TStringList;
const рдкрд╛рд╕рд╡рд░реНрдб: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
рд╡реИрдзрддрд╛: рдкреВрд░реНрдгрд╛рдВрдХ; KeySize: рдкреВрд░реНрдгрд╛рдВрдХ; const ExtendedKeyUsage: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
const рд░рд╛рд╖реНрдЯреНрд░рдирд╛рдо, рдИрдореЗрд▓, рд╕рдВрдЧрдарди, рд╕рдВрдЧрдардирд╛рддреНрдордХ рд╕рдВрдЧрдарди, рджреЗрд╢: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
const CAFileSpec, CAPFXFileSpec, CAPStreetKeyPassword: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
рдПрд░реАрдореЗрдиреНрдлрд╝рд┐рд▓реЗрд╕реНрдкреАрдХ: рд╕реНрдЯреНрд░рд┐рдВрдЧ = '';
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ: рдЯреАрдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ = рдиреАрд▓; LogMsgProc: TLogMsgProc = nil);
рд╡рд░
TmpPStreetKeyFileSpec, TmpPublicKeyFileSpec: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
TmpCerFileSpec, TmpPfxFileSpec, TmpCrFileSpec, TmpCASerialFileSpec, TmpExtFileSpec, TmpPemFileSpec: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
TmpCAPStreetKeyFileSpec: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
рд╕реБрдмрдЬ: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
рдЯреЗрдореНрдкреАрдбрд┐рд░: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
рдирд┐рд░рд╕реНрдд: рдмреВрд▓рд┐рдпрди;
рд╡рд╛рд╕реЗрд░реНрд░: рдмреВрд▓рд┐рдпрди;
OutPublicKeyFileSpec: рд╕реНрдЯреНрд░рд┐рдВрдЧ;
рд╢реБрд░реВ рдХрд░рдирд╛
рд╡рд╛рд╕реЗрд░реНрд░: = рд╕рдЪреНрдЪрд╛;
рдЯреЗрдореНрдкреАрдбрд┐рд░: = рдЧреЗрдЯрдЯреЗрдореНрдкрд┐рд░;
рдХреЛрд╢рд┐рд╢
CheckIsFileExists (CAFileSpec);

// рдореВрд▓ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реЗ рдирд┐рдЬреА рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
TmpCAPStreetKeyFileSpec: = TempDir + ChangeFileExt (ExtractFileName (CAPFXFileSpec), '') + '.pStreetKey.pem';
ExportPStreetKeyFromPfx (CAPFXFileSpec, TmpCAPStreetKeyFileSpec, CAPStreetKeyPassword);

// рд╣рдо рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдХреЗ рд╕рдлрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рд╣реА - // рд╣рдо рд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ
TmpPStreetKeyFileSpec: = TempDir + FileName + '.pStreetKey.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 (рд░рд╛рд╖реНрдЯреНрд░рдордВрдбрд▓, рдИрдореЗрд▓, рд╕рдВрдЧрдарди, рд╕рдВрдЧрдардирд╛рддреНрдордХ рд╕рдВрдЧрдарди, рджреЗрд╢);

рдирд┐рд░рд╕реНрдд: = рдЧрд▓рдд;
рдпрджрд┐ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (ProgressProc) рддреЛ
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ (13, 4, рдирд┐рд░рд╕реНрдд, рдкреНрд░рд╛рд░реВрдк ('% s (% d% s) ...' {'рдЬрдирд░реЗрдЯ рдХреАрдЬрд╝ (% d рдмрд┐рдЯреНрд╕) ...'), [StKeysGenerate, KeySize, StBit));
рдпрджрд┐ рдирд┐рд░рд╕реНрдд рд╣реБрдЖ рддреЛ
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ;

CreatePStreetKey (TmpPStreetKeyFileSpec, TmpPublicKeyFileSpec, KeySize, ARandomFileSpec);

рдпрджрд┐ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (ProgressProc) рддреЛ
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ (13, 5, рдирд┐рд░рд╕реНрдд, рдкреНрд░рд╛рд░реВрдк ('% s ...', [StGenerateCert рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ]) {'рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ ...'});
рдпрджрд┐ рдирд┐рд░рд╕реНрдд рд╣реБрдЖ рддреЛ
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ;

рдпрджрд┐ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (ProgressProc) рддреЛ
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ (13, 6, рдирд┐рд░рд╕реНрдд, рдкреНрд░рд╛рд░реВрдк ('% s ...', [StCreateCertificateRequest]) {'рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдБ ...'};

// рдПрдХ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдБ - .csr
RunOpenSSLConsole (рдкреНрд░рд╛рд░реВрдк (
'req -new -key "% s" -out "% s" -days% d -subj% s,'
[TmpPStreetKeyFileSpec, TmpCsrFileSpec, ValidDays, Subj]
), рдЯреНрд░реВ, рдиреАрд▓, рдиреАрд▓);

рдпрджрд┐ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (ProgressProc) рддреЛ
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ (13, 7, рдирд┐рд░рд╕реНрдд, рдкреНрд░рд╛рд░реВрдк ('% 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'
);

рдпрджрд┐ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (ProgressProc) рддреЛ
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ (13, 8, рдирд┐рд░рд╕реНрдд, рдкреНрд░рд╛рд░реВрдк ('% s ...', [StCreateSignedCertificate]) {'рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдПрдБ ...'};

// рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореВрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдПрдВ
RunOpenSSLConsole (рдкреНрд░рд╛рд░реВрдк (
'x509 -рд░реЗрдХ-рджрд┐рди% d -passin рдкрд╛рд╕:% s -in "% s" -CAform DER -CA "% s" -CAkey "% s" -CAserial "% s" -CAceseserial -out "% s" - DER -extfile "% s" ',
[рд╡реИрдз, рдкрд╛рд╕рд╡рд░реНрдб, TmpCsrFileSpec, CAFileSpec, TmpCAPStreetKeyFileSpec, TmpCASerialFileSpec, TmpCerFileSpec, TxtExtFileSpec]
), рдЭреВрдареА, рдиреАрд▓, рдиреАрд▓);

рдпрджрд┐ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (ProgressProc) рддреЛ
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ (13, 9, рдирд┐рд░рд╕реНрдд, рдкреНрд░рд╛рд░реВрдк ('% s ...', [StConvertCertificate]) {'CER рд╕реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ PEM рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ ...'});

// pfx рдореЗрдВ рдЕрдЧрд▓реА рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП cer => pem рдХрдиреНрд╡рд░реНрдЯ рдХрд░реЗрдВ
RunOpenSSLConsole (рдкреНрд░рд╛рд░реВрдк (
'x509 -рдЗрди "% s" -рдЗрдирдлреЙрд░реНрдо DER -out "% s" -outform PEM',
[TmpCerFileSpec, TmpPemFileSpec]
), рдЭреВрдареА, рдиреАрд▓, рдиреАрд▓);

рдпрджрд┐ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (ProgressProc) рддреЛ
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ (13, 10, рдирд┐рд░рд╕реНрдд, рдкреНрд░рд╛рд░реВрдк ('% s ...', [StCreatePFX]) {'PFX рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ ...');

// рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк pem рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рд╕реЗ pfx рдмрдирд╛рдПрдВ
RunOpenSSLConsole (рдкреНрд░рд╛рд░реВрдк (
'pkcs12 -рдкрд╛рд╕рд╡рд░реНрдб рдкрд╛рд╕:% s -export -in "% s" -inkey "% s" -name "% s" -out "% s"',
[рдкрд╛рд╕рд╡рд░реНрдб, TmpPemFileSpec, TmpPStreetKeyFileSpec, FileName, TmpPfxFileSpec]
), рдЭреВрдареА, рдиреАрд▓, рдиреАрд▓);

OutPublicKeyFileSpec: = TmpPublicKeyFileSpec + '.sign'

рдпрджрд┐ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (ProgressProc) рддреЛ
рдкреНрд░реЛрдЧреНрд░реЗрд╕рдкреНрд░реЛрдХ (13, 11, рдирд┐рд░рд╕реНрдд, рдкреНрд░рд╛рд░реВрдк ('% s ...', [StExportPublicKey]) {'PFX рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ ...');

ExportPublicKeyFromPfx (TmpPfxFileSpec, OutPublicKeyFileSpec, рдкрд╛рд╕рд╡рд░реНрдб);

// рдФрд░ рдкрд░рд┐рдгрд╛рдо рдлрд╝рд╛рдЗрд▓ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ
OutFiles.Add (TmpCerFileSpec);
OutFiles.Add (TmpPfxFileSpec);
OutFiles.Add (TmpPStreetKeyFileSpec);
OutFiles.Add (TmpPublicKeyFileSpec);
OutFiles.Add (OutPublicKeyFileSpec);

рд╡рд╛рд╕реЗрд░реНрд░: = рдЭреВрдареА;
рдЕрдВрдд рдореЗрдВ
// рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣рдЯрд╛рдПрдВ
рдЕрдЧрд░ рд╡рд╛рд╕реЗрд░ рд╣реЛ рддреЛ
рд╢реБрд░реВ рдХрд░рдирд╛
CheckDeleteFile (TmpCerFileSpec);
CheckDeleteFile (TmpPfxFileSpec);
CheckDeleteFile (TmpPStreetKeyFileSpec);
CheckDeleteFile (TmpPublicKeyFileSpec);
CheckDeleteFile (OutPublicKeyFileSpec);
рдЕрдВрдд;

CheckDeleteFile (TmpCsrFileSpec);
CheckDeleteFile (TmpCASerialFileSpec);
CheckDeleteFile (TmpExtFileSpec);
CheckDeleteFile (TmpPemFileSpec);
CheckDeleteFile (TmpCAPStreetKeyFileSpec);
рдЕрдВрдд;
рдЕрдВрдд;

рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдореЗрдВ PKCS # 12 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рддрд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, pfx рдлрд╝рд╛рдЗрд▓ рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдпрд╛рдд рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ рдЗрд╕ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдореЗрдВ рдЖрдкрдХреА рдирд┐рдЬреА рдХреБрдВрдЬреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдпрд╛рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЛ рдЙрд╕ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЕрдЧрд▓рд╛, рдЖрдЙрдЯрд▓реБрдХ рдЦреЛрд▓реЗрдВ рдФрд░ рдЬрд╛рдПрдВ: рдлрд╝рд╛рдЗрд▓> рд╕реЗрдЯрд┐рдВрдЧреНрд╕> рдЯреНрд░рд╕реНрдЯ рд╕реЗрдВрдЯрд░> рдЯреНрд░рд╕реНрдЯ рд╕реЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕> рдИрдореЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ ред рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдИрдореЗрд▓ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдмрдХреНрд╕реЗ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:


рдЕрдм, рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ, рдЖрдкрдХреЛ рдЙрд╕ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд▓реНрдк рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ...> рдЕрдкрдирд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЪреБрдиреЗрдВ рдФрд░ рдЪреБрдиреЗрдВ:



рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА :) рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдЗрдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдЪреЗрдХ "рдЦреБрдж рдХреЗ рд▓рд┐рдП" рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдирдпрд╛ рд╕рдВрдкрд░реНрдХ рдмрдирд╛рдПрдВред рд╣реЛрдо> рд╕рдВрдкрд░реНрдХ> рд╕рдВрдкрд░реНрдХ рдмрдирд╛рдПрдВ ред рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдкрд░, рдмрд╕ рдкреВрд░рд╛ рдирд╛рдо рдФрд░ рдИрдореЗрд▓ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ ред рдореЗрд▓ , рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЯреИрдм рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╣рдо рдЖрдпрд╛рдд рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ:



рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ * .cer рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ



рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░) рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдмрдВрдж рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдЕрдм рд╣рдо рдЦреБрдж рдХреЛ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд▓> рд╣реЛрдо> рд╕рдВрджреЗрд╢ рдмрдирд╛рдПрдВ рдкрд░ рдЬрд╛рдПрдВ ред To рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдкрддрд╛ рдкреБрд╕реНрддрд┐рдХрд╛ рд╕реЗ рдЗрд╕рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЕрдкрдирд╛ рд╕рдВрдкрд░реНрдХ рдЬреЛрдбрд╝реЗрдВ:



рдПрдХ рдкрддреНрд░ рднреЗрдЬреЗрдВред рдЗрдирдмреЙрдХреНрд╕ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╣рдордиреЗ рд╡рд╣рд╛рдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╕рдВрджреЗрд╢ рдвреВрдВрдвреЗрдВред рдпрд╣ рдКрдкрд░реА рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рд▓реЙрдХ рдХреЗ рд╕рд╛рде рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╣реИред рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рднреЗрдЬрд╛ рдЧрдпрд╛ рдкрддреНрд░ рдЗрдирдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рднреЗрдЬреЗрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЕрдкрдбреЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред



рдХрд┐рд╕реА рд╕рдВрджреЗрд╢ рдпрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:



рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди "рд╕реНрд╡рдпрдВ" рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгрд┐рдд рд╕рдВрджреЗрд╢ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкрддреНрд░ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╣реЛрддреА рд╣реИред

рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдРрд╕рд╛ рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕реЗ рд╕рдВрдкрд░реНрдХ (рдПрдбреНрд░реЗрд╕ рдмреБрдХ) рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ X.509 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╡рд┐рд╡рд░рдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ > рд╡рд┐рд╡рд░рдг> рдкреНрд░рдорд╛рдг рдкрддреНрд░ рджрд┐рдЦрд╛рдПрдВ> рд╕рдВрд░рдЪрдирд╛> рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд┐рд░реНрдпрд╛рдд рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдордиреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди "рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП" рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдерд╛ред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рдХреЛрдИ рдкреНрд░рдорд╛рдг рдкрддреНрд░ (рдФрд░ рдПрдХ рд╕рдВрд╡рд╛рджрджрд╛рддрд╛ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА) рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрд╕реЗ рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдЕрдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдкрд░, рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╕рд░реНрд╡рд░, рдЬреИрд╕реЗ рдХрд┐ рд╕рд╛рдЗрдмрд░ рдХреИрдлреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдХреЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреА рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рд╡реЗ рдЙрдиреНрд╣реЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рднреЗрдЬрддреЗ рд╣реИрдВред

рдпрджрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рд░реНрд╡рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЖрдк рдЗрд╕реЗ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдРрд╕реА рдХреБрдВрдЬреА рдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╣рдорд▓рд╛рд╡рд░ рдиреЗ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдорд┐рддреНрд░ рдХреА рдХреБрдВрдЬреА рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреА "рдирдХрд▓реА" рдХреБрдВрдЬреА рднреЗрдЬреА рдереАред рддрдм рд╡рд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рд╕рднреА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рдорд┐рддреНрд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреЛ рдЙрд╕рдХреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ Skype рдпрд╛ рдлрд╝реЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝реЛрди рдХрд░рдирд╛ рд╣реИред

Source: https://habr.com/ru/post/In209642/


All Articles