рд╕реА # ,
рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдФрд░
рдорд┐рдХреНрд░реЛрдЯрд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░
рд░рд╛рдЙрдЯрд░рдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдкрд░ рдирд┐рд╖рд┐рджреНрдз рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди
рдЪреЗрддрд╛рд╡рдиреА! 03/19/2014 рдХреЛ рд╣рд╛рд▓ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрдЪреНрдЫреЗрдж рд╕рдВрд╢реЛрдзрд┐рддрдкрд░рд┐рдЪрдпрд╛рддреНрдордХ
рдХрд╛рдо рдореЗрдВ рд╣рдо
рджреВрд░рд╕рдВрдЪрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ
рдЕрдиреБрд╕реНрдорд╛рд░рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрдВрдЧреЗред
рдХрд╛рд░реНрдп рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдирд┐рд╡реЗрджрди рд╕реГрдЬрди
- рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
- рдЕрдиреБрд░реЛрдз рд╣рд╕реНрддрд╛рдХреНрд╖рд░
- рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
- рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
- MikroTik рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛
рдирд┐рд╡реЗрджрди рд╕реГрдЬрди
рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЕрдирд▓реЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
XML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдлрд╝рд╛рдЗрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреА рд╣реЛрдЧреАред рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
<?xml version="1.0" encoding="windows-1251"?> <request> <requestTime>2012-01-01T01:01:01.000+04:00</requestTime> <operatorName><![CDATA[ ]]></operatorName> <inn>1234567890</inn> <ogrn>1234567890123</ogrn> <email>email@email.ru</email> </request>
- requestTime - рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХреЗ рдЧрдарди рдХреА рддрд╛рд░реАрдЦ рдФрд░ рд╕рдордп;
- operName - рд╕рдВрдЪрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо;
- рд╕рд░рд╛рдп - рдЯреЗрд▓рд┐рдХреЙрдо рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЯрд┐рди (рдХрд╛рдиреВрдиреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП 10 рдЕрдВрдХ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП 12 рдЕрдВрдХ);
- рдУрдЧрд░рди - рдПрдХ рджреВрд░рд╕рдВрдЪрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдУрдЬреАрдЖрд░рдПрди (рдХрд╛рдиреВрдиреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП 13 рдЕрдВрдХ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП 15 рдЕрдВрдХ);
- рдИрдореЗрд▓ - рдЕрдирд▓реЛрдбрд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХрд╛ рдИрдореЗрд▓ рдкрддрд╛; рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рддрдХрдиреАрдХреА рдореБрджреНрджреЛрдВ рдпрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ред
рдореБрдЦреНрдп
рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░реВрдк
2012-01-01T01: 01: 01.000 + 04: 00 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдордп рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ
рд╡рд┐рдВрдбреЛрдЬрд╝ -1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
C # рдореЗрдВ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдЬрдирд░реЗрд╢рди рдлрдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдб:
public static String GeneratingRequest(String operatorName, String inn, String ogrn, String email) { String result = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>"; result += "<request><requestTime>"; result += DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz"); result += "</requestTime><operatorName>"; result += "<![CDATA[" + operatorName + "]]>"; result += "</operatorName><inn>"; result += inn; result += "</inn><ogrn>"; result += ogrn; result += "</ogrn><email>"; result += email; result += "</email></request>"; return result; }
рдЕрдм рдлрд╛рдЗрд▓ рдХреЛ
windows-1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╕реЗрд╡ рдХрд░реЗрдВ:
String Request = GeneratingRequest(" ", "1234567890", "1234567890123", "email@email.ru") StreamWriter swRequest = new StreamWriter(@"C:\request.xml", false, Encoding.GetEncoding("Windows-1251")); swRequest.Write(Request); swRequest.Close();
рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЙрд╕ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
рдПрд╕рдПрд╕рдПрд▓ / рдЯреАрдПрд▓рдПрд╕ -
рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдкрди рд╕реЛрд░реНрд╕ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
OpenSSL
рдЗрд╕ рд╕рд╛рдЗрдЯ рд╕реЗ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ -
slproweb.com рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
Win64 OpenSSL v1.0.1g рдерд╛ ред
рд╣рд╛рдВ, рдЗрд╕ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд
рд╡рд┐рдЬреБрдЕрд▓ C ++ 2008 Redistributables рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдЬрд┐рд╕реЗ рд╡рд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред
"рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдЪреБрдиреЗрдВ" рд╕рдВрд╡рд╛рдж рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп
, рдЖрдкрдХреЛ "рдж рдУрдкрдирдПрд╕рдПрд╕рдПрд▓" рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ (/ рдмрд┐рди) рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдБ рдЬрд╣рд╛рдБ рдЖрдкрдиреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛:
C: / OpenSSL / bin рдФрд░
editsl.cfg рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬреЛрдбрд╝реЗрдВ:
openssl_conf = openssl_def
рдЕрдВрдд рдореЗрдВ:
[openssl_def]
engines=engine_section
[engine_section]
gost=gost_section
[gost_section]
engine_id=gost
dynamic_path = C:/OpenSSL/bin/gost.dll
default_algorithms=ALL
рд╕рдм рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ:
OPENSSL_CONF = C: /OSSSSL/bin/openssl.cfg -
Opensl.cfg рдХрд╛ рдкреВрд░реНрдг рдкрде
рдЦреИрд░,
рдкреЗрдЯ + рдореЗрдВ = рд╕реА: / рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ / рдмрд┐рди;рдЕрдм рд╣рдореЗрдВ рдИрдбреАрдПрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЖрдк рдЗрд╕реЗ рдПрдХ
рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдореЗрдВ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВред
P12FromGostCSP рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Windows рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдХрд░рдВрд╕реА рд╕реЗ
PKCS # 12 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреБрдВрдЬреА рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреНрдпреЛрдВ P12FromGostCSPрдореИрдВ рд▓реЗрдЦ рдкрд░
рдПрдлрдПрдХреНрд╕рдЯреНрд░реЙрди рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ
GOST рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕ рдкрд░ рдкреАрдПрдЪрдкреА-рд╕рд╛рдмреБрди рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕реЗ
рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВрд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдорд╛рдирдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреГрд╢реНрдп рд╕рдВрд╡рд╛рдж рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рдУрдкрдирд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ:
рдореИрдХ рдиреЗ рдареАрдХ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛
рдмреИрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ
рд▓реЛрдХрд▓рдХрд┐рдб: режрез режреж режреж
friendlyName: REGISTRY \\ mstaff
Microsoft CSP рдирд╛рдо: рдХреНрд░рд┐рдкреНрдЯреЛ-рдкреНрд░реЛ GOST R 10/34/2001 рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛
рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рддреНрд░реБрдЯрд┐
140017040754368: рддреНрд░реБрдЯрд┐: 06074079: рдбрд┐рдЬрд┐рдЯрд▓ рд▓рд┐рдлрд╛рдлрд╛ рджрд┐рдирдЪрд░реНрдпрд╛: EVP_PBE_CipherInit: рдЕрдЬреНрдЮрд╛рдд pbe рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо: evp_pbe.c: 167: TYPE = 1.2.840.11.149.1.12.1.80
140017040754368: рддреНрд░реБрдЯрд┐: 23077073: PKCS12 рджрд┐рдирдЪрд░реНрдпрд╛: PKCS12_pbe_crypt: pkcs12 algor рд╕рд┐рдлрд░рд┐рдЯрд┐рдЯ рддреНрд░реБрдЯрд┐: p12_decr.c: 83:
140017040754368: рддреНрд░реБрдЯрд┐: 2306A075: PKCS12 рджрд┐рдирдЪрд░реНрдпрд╛: PKCS12_item_decrypt_d2i: pkcs12 pbe рдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐: p12_decr.c: 130:
рдмрд╕ рдпрд╣реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВ:
P12FromGostCSP рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ PKCS # 12 рдХрдВрдЯреЗрдирд░ CryptoCom LLC (Opensl рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ) рдФрд░ Top Cross LLC рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕рдорд╛рди рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИ, рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, CryptoPro рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред CSP (рд╕рдВрд╕реНрдХрд░рдг R3 рдХреЗ рдмрд╛рдж рд╕реЗ)ред
рдХреНрд░рд┐рдкреНрдЯреЛрдкреНрд░реЛ рд╕реАрдПрд╕рдкреА рдЖрд░ 3 рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдкреАрдХреЗрд╕реАрдПрд╕ # 12 рдХрдВрдЯреЗрдирд░ рдХреЗ рдПрдПрд╕рдПрди 1 рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рджреЗрдЦрдирд╛ рдФрд░ рдЕрдиреНрдп рд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХреА рдУрдкрдирд╕реАрдПрд▓ рдпрд╛ рд▓рд┐рд░реНрд╕рд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ:
#openssl asn1parse тАУinform DER тАУin <PKCS рдХрдВрдЯреЗрдирд░ # 12>
рдпрджрд┐ рдЖрдк рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо GOST R 34.11-94 рдХреЗ рдмрдЬрд╛рдп, SHA1 рдХрд╛ рдЙрдкрдпреЛрдЧ CryptoPro рд╕реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдХрд░ рдХрдВрдЯреЗрдирд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ рддреЛ рдЖрдкрдХреЛ рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛:
#openssl pkcs12-in <PKCS рдХрдВрдЯреЗрдирд░ # 12>
PKCS # 12 рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдФрд░ рдирд┐рдЬреА рдХреБрдВрдЬреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП! рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
openssl.exe pkcs12 -in C:/key.pfx -nodes

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ
PEM рдореЗрдВ рдмрджрд▓реЗрдВ ред
OpenSSL рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ - рдпрд╣
PKCS # 12 рдХреБрдВрдЬреА рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИ):
openssl.exe pkcs12 -in C:/key.pfx -out C:/key.pem -nodes -clcerts

рд╣рд░ рдХреЛрдИ рдЕрдм рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рдЕрдиреБрд░реЛрдз рд╣рд╕реНрддрд╛рдХреНрд╖рд░
рдЖрдк рдирд┐рдореНрди рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде OpenSSL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
openssl.exe smime -sign -in C:/request.xml -out C:/request.xml.sign -signer C:/key.pem -outform DER

рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЗрдирд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ C # рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛:
public static Boolean SignRequest() { Boolean ret = true; String OpenSSLPath = @"C:\OpenSSL\bin"; String RequestPath = @"C:\request.xml"; String SignRequestPath = @"C:\request.xml.sign"; String KeyPEMPath = @"C:\key.pem"; try { Process cmdProcess = new Process(); cmdProcess.StartInfo.WorkingDirectory = OpenSSLPath; cmdProcess.StartInfo.FileName = "openssl.exe"; cmdProcess.StartInfo.Arguments = String.Format("smime -sign -in {0} -out {1} -signer {2} -outform DER", RequestPath, SignRequestPath, KeyPEMPath); cmdProcess.StartInfo.CreateNoWindow = true; cmdProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmdProcess.Start();
рдЕрдм рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг :
gosuslugi.ru , рдЪреБрдиреЗрдВ -
рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ред ES - рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ, PKCS # 7 рдкреНрд░рд╛рд░реВрдк рдореЗрдВрдЖрдк рдЗрд╕реЗ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рдИрдбреАрдПрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреАрдИрдПрдо рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдЕрднреА рднреА
рдпрд╣рд╛рдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ ):
openssl x509 -inform der -in C:/most.cer -out C:/most.pem
рдФрд░ рд╣рдорд╛рд░реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
openssl.exe smime -verify -in C:/request.xml.sign -content C:/request.xml -CAfile C:/most.pem -inform DER -out C:/validrequest.xml
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рд▓рд╛рдЗрди рджреЗрдЦреЗрдВрдЧреЗ:
Verification successful
рдФрд░
request.xml рдХреА рд╕рд╛рдордЧреНрд░реА
validrequest.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдЧреАред
рд╣рдо рдирд┐рд╖рд┐рджреНрдз рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдПрдХ рдбрдВрдк рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛ рдФрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЕрдкрд▓реЛрдб рдХрд░рдирд╛
рд╕рдм рдХреБрдЫ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ:
рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХрд╛ рдлреЙрд░реНрдо , рд╣рдо рдЕрдиреБрд░реЛрдз рдлрд╝рд╛рдЗрд▓ рдФрд░ рдЙрд╕рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (
C: /request.xml рдФрд░
C: /request.xml.sign )
рднреЗрдЬрддреЗ рд╣реИрдВ
рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ - рдЕрдиреБрд░реЛрдз рдЖрдИрдбреА, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ
рдЬрд╝рд┐рдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ 5 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рджреЛ рдбрдВрдкред
xml рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреА - рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдбрдВрдк рдФрд░ рдЗрд╕рдХрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ред
рдЖрдк OpenSSL рдпрд╛
gosuslugi.ru рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
openssl.exe smime -verify -in C:/dump.xml.sig -content C:/dump.xml -CAfile C:/cartk.pem -inform DER -out C:/validdump.xml
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рд▓рд╛рдЗрди рджреЗрдЦреЗрдВрдЧреЗ:
Verification successful
рдФрд░
dip.xml рдХреА рд╕рд╛рдордЧреНрд░реА
validdump.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдЧреА ред
рдЕрдм рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрддрд░рд╛рдИ рдХреЗ рд▓рд┐рдП,
рд╕реЛрдк рдПрдХреНрд╕реЗрд╕
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рддрд╣рдд рд╕реЗрд╡рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд
рд╣реИ , рдкрддрд╛:
рд╕реЗрд╡рд╛ ред
рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓ рдпреЛрдЬрдирд╛ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ:
рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓ рдпреЛрдЬрдирд╛ ред
рд╕реЗрд╡рд╛ рдореЗрдВ 4 рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- getLastDumpDateEx
рд╡рд┐рдзрд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЕрдкрд▓реЛрдб рдХреЗ рдЕрдВрддрд┐рдо рдЕрджреНрдпрддрди рдХрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред рдЬрд╡рд╛рдм рдореЗрдВ, рдпрд╣ lastDumpDate рднреЗрдЬрддрд╛ рд╣реИ - рд▓рдВрдмреА рддрд┐рдерд┐ UNIX рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрдХрдВрдб рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ, рд╕рд╛рде рд╣реА lastDumpDateUrgently - рд╡рд╣ рд╕рдордп рдЬрдм рдЕрдкрд▓реЛрдб рдЕрдВрддрд┐рдо рдмрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рддрддреНрдХрд╛рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрд╣ рднреА UNIX рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рд╕реЗрдХрдВрдб рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ)ред - getLastDumpDate
рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдпрд╣ getLastDumpDateEx рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ lastDumpDate рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ ред, рд▓рдВрдмреА рддрд┐рдерд┐ UNIX рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрдХрдВрдб рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВред - sendRequest
рд╡рд┐рдзрд┐ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЕрдирд▓реЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдзрд╛рд░ 64 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддрд╛ рд╣реИ - рдЕрдиреБрд░реЛрдз рдлрд╝рд╛рдЗрд▓ рдФрд░ рдЙрд╕рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ ( C: /request.xml рдФрд░ C: /request .xml.sign ) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬрддрд╛ рд╣реИ - рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрдиреБрд░реЛрдзред рдмреВрд▓рд┐рдпрди рдкреНрд░рд╛рд░реВрдк, рдФрд░ рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рдлрд▓ рд╣реИ, рддреЛ рдХреЛрдб - рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ, рд╡рд╣ рд░реЗрдЦрд╛ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд░рд┐рдгрд╛рдо - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред - getResult
рд╡рд┐рдзрд┐ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ - рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЙрддрд╛рд░рдирд╛, рдХреЛрдб рд▓реЗрддрд╛ рд╣реИ - рдЕрдиреБрд░реЛрдз рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рд╡рд╣ рдкрдВрдХреНрддрд┐ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрд╡рд╛рдм рдореЗрдВ, рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬрддрд╛ рд╣реИ - рдмреВрд▓рд┐рдпрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо, рдФрд░ рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ registerZipArchive - рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд░рд┐рдгрд╛рдо - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред
рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди:
- рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
- рдЕрдорд╛рдиреНрдп ES рдПрд▓реНрдЧреЛрд░рд┐рдердо
- рдЕрдорд╛рдиреНрдп ES рдкреНрд░рд╛рд░реВрдк
- рдЕрдорд╛рдиреНрдп рдИрдПрд╕ рдкреНрд░рдорд╛рдг рдкрддреНрд░
- рдИрдкреА рдХрд╛ рдЧрд▓рдд рдореВрд▓реНрдп
- ES рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐
- рдЖрд╡реЗрджрдХ рдХреЗ рдкрд╛рд╕ рд╕реВрдЪрдирд╛ рдФрд░ рджреВрд░рд╕рдВрдЪрд╛рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдирд╣реАрдВ рд╣реИ
рдореЗрдореЛ рдореЗрдВ рд╡рд╛рд╣рдХ рдХреЛ
рдЗрд╕ рдЦрдВрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдбрдмреИрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред
рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ:
- рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЕрдирд▓реЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, getLastDumpDateEx рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдкрд┐рдЫрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдпрджрд┐ lastDumpDateUrgently рдХрд╛ рдорд╛рди рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рддреБрд░рдВрдд рдПрдХ рдЕрджреНрдпрддрди рдЕрдирд▓реЛрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡рд┐рд╡реЗрдХ рдкрд░ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рджрд┐рди рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ ред
- рдпрджрд┐ рдЕрдирд▓реЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ SendRequest рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВред
- рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж, рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП getResult рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдЕрднреА рддрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ (рдкрд░рд┐рдгрд╛рдо рдХреА рд╕рд╛рдордЧреНрд░реА рджреЗрдЦреЗрдВ рдХреНрд╖реЗрддреНрд░), рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж рдЪрд░рдг 3 рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред
рд╣рдо рдбрдмреНрд▓реНрдпреВрдПрд╕рдбреАрдПрд▓ рдпреЛрдЬрдирд╛ рдХреЗ рдкрддреЗ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реБрдП рд╕реЗрд╡рд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб
getLastDumpDate ,
sendRequest ,
getResultMaxReceivedMessageSizeрд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдкреНрд░рдкрддреНрд░ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреАрдВ: рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╕рдВрджреЗрд╢ рдЖрдХрд╛рд░ рдХрд╛ рдХреЛрдЯрд╛ (
65536 ) рдкрд╛рд░ рдХрд░ рдЧрдпрд╛ рд╣реИред рдХреЛрдЯрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
MaxReceivedMessageSize рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрд╛рдзреНрдпрдХрд╛рд░реА рддрддреНрд╡ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ
MaxReceivedMessageSize рд╕рдВрдкрддреНрддрд┐
рдмрдврд╝рд╛рдиреА рдкрдбрд╝реА ред
рд╕рдорд░реНрдерди рдЯрд┐рдкреНрдкрдгреА:
рдлрд┐рд▓рд╣рд╛рд▓, getResult рдореЗрдердб рд░рд┐рд╕реНрдкрд╛рдВрд╕ рдореЗрдВ рдПрдХ xml рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ 65536 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред
public static Int64 LastDumpDate() { Int64 lastDumpDate = 0; BasicHttpBinding HttpBinding = new BasicHttpBinding(); HttpBinding.MaxReceivedMessageSize = 1*1024*1024*1024;
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ:
String resultComment, code; if(SendRequest(out resultComment, out code, File.ReadAllBytes(@"C:/request.xml"), File.ReadAllBytes(@"C:/request.xml.sign"))) {
рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЕрджреНрдпрддрди рдХрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реЗ рдбреЗрдЯрдЯрд╛рдЗрдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
DateTime LastDumpDate = (new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(LastDumpDate()/1000);
рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдбрдВрдк рдХрд░реЗрдВ
рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЦреЛрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдбрдВрдк
C: /register/dump.xml рдорд┐рд▓рддрд╛ рд╣реИрдЙрджрд╛рд╣рд░рдг рдбрдВрдк рд╕рд╛рдордЧреНрд░реА:
<?xml version="1.0" encoding="windows-1251"?> <reg:register updateTime="2014-02-02T12:00:00+04:00" xmlns:reg="http://rsoc.ru" xmlns:tns="http://rsoc.ru" updateTimeUrgently="2014-02-01T11:00:00"> <content id="68" includeTime="2013-12-01T10:00:05"> <decision date="2013-12-01" number="9" org=""/> <url><![CDATA[http://site1.com/index.php]]></url> <domain><![CDATA[site1.com]]></domain> <ip>1.1.1.1</ip> </content> <content id="68" includeTime="2013-12-01T10:00:05"> <decision date="2013-12-01" number="9" org=""/> <url><![CDATA[http://site2.com/page1.php]]></url> <url><![CDATA[http://site2.com/page2.php]]></url> <url><![CDATA[http://site2.com/page3.php]]></url> <domain><![CDATA[site2.com]]></domain> <ip>1.1.1.1</ip> <ip>1.1.1.2</ip> </content> <content id="9999" includeTime="2014-02-01T15:17:51" urgencyType="1"> <decision date="2014-02-01" number=" " org=""/> <url><![CDATA[http://site3.com/page1.html]]></url> <domain><![CDATA[site3.com]]></domain> <ip>1.2.3.4</ip> </content> </reg:register>
рдкрд╛рд░рд╕рд┐рдо рдПрдХреНрд╕рдПрдордПрд▓
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдПрдВ: рдкрд╣рд▓реЗ
RegisterDump рдореЗрдВ
UpdateTime рдлрд╝реАрд▓реНрдб рдФрд░
рд╕рд╛рдордЧреНрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ
рдХреА рдПрдХ рд╕реВрдЪреА
рд╣реЛрдЧреА , рдФрд░ рджреВрд╕рд░рд╛
ItemRegisterDump рд╕рднреА рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ
рд╕рд╛рдордЧреНрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡
рдХрд░реЗрдЧрд╛ ред
public class RegisterDump { public List<ItemRegisterDump> Items { get; set; } public String UpdateTime { get; set; } public RegisterDump() { this.Items = new List<ItemRegisterDump>(); this.UpdateTime = String.Empty; } public RegisterDump(String UpdateTime, List<ItemRegisterDump> Items) { this.Items = Items; this.UpdateTime = UpdateTime; } } public class ItemRegisterDump { public String id { get; set; } public String includeTime { get; set; } public String date { get; set; } public String number { get; set; } public String org { get; set; } public List<String> url { get; set; } public List<String> domain { get; set; } public List<String> ip { get; set; } public ItemRegisterDump() { id = String.Empty; includeTime = String.Empty; date = String.Empty; number = String.Empty; org = String.Empty; url = new List<String>(); domain = new List<String>(); ip = new List<String>(); } }
Pars:
RegisterDump Register = new RegisterDump(); String dumpfile = @"C:/register/dump.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(dumpfile); Register.UpdateTime = xmlDoc.GetElementsByTagName("reg:register")[0].Attributes.GetNamedItem("updateTime").InnerText; XmlNodeList content = xmlDoc.GetElementsByTagName("content"); for (int i = 0; i < content.Count; i++) { ItemRegisterDump item = new ItemRegisterDump(); item.id = content[i].Attributes.GetNamedItem("id").InnerText; item.includeTime = content[i].Attributes.GetNamedItem("includeTime").InnerText; foreach (XmlNode node in content[i].ChildNodes) { switch(node.Name) { case "decision": item.date = node.Attributes.GetNamedItem("date").InnerText; item.number = node.Attributes.GetNamedItem("number").InnerText; item.org = node.Attributes.GetNamedItem("org").InnerText; break; case "url": item.url.Add(node.InnerText); break; case "domain": item.domain.Add(node.InnerText); break; case "ip": item.ip.Add(node.InnerText); break; } } Register.Items.Add(item); }
рдЕрдм рдЗрд╕ рд╕рд╛рд░реЗ рд╕рд╛рдорд╛рди рдХреЛ рд╣рдорд╛рд░реЗ рдорд┐рдХреНрд░реЛрдЯрд┐рдХ рдкрд░ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрдВред
рдорд┐рдХреНрд░реЛрдЯрд┐рдХ рдХреЗ рд╕рд╛рде рдЕрд╡рд░реБрджреНрдз
рд╣рдо рдЗрд╕реЗ
рд▓реЗрдпрд░ 7-рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ
рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
/ip firewall layer7-protocol add name=12 comment=register regexp=^.+(chelaxe.ru).*$
/ip firewall filter add action=drop chain=forward disabled=no dst-port=80 layer7-protocol=12 protocol=tcp src-address=192.168.0.0/24 comment=register



192.168.0.0/24 рд╕рдмрдиреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреИрдХреЗрдЯ
рдЯреАрд╕реАрдкреА рдореЗрдВ
80 рд╕реЗ рдЕрдзрд┐рдХ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ
рд╕рдмрдиреЗрдЯрд┐рдВрдЧ chelaxe.ru рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде
рдЫреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВ ред
рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ, рд╢рд┐рд▓рд╛рд▓реЗрдЦ
рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдЕрджреНрдпрддрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдпрд╣рд╛рдБ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧреА:
/ip firewall layer7-protocol remove [find comment=register]
/ip firewall filter remove [find comment=register]

рдорд┐рдХреНрд░реЛрдЯрд┐рдХ рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░
рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрдЧрд╛, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рд╣реИ:
рд╡рд┐рдХреА / рдПрдкреАрдЖрдИ # рд╕реАрдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдХреНрд▓рд╛рд╕) рдФрд░ рдКрдкрд░ рдмреНрд▓реЙрдХ рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо C # рдореЗрдВ рдпрд╣ рд╕рдм рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ
public static Boolean AddFilterL7(String ip, String username, String password, RegisterDump dump, String SRCAddress) { Boolean ret = true; try {
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдбреЛрдореЗрди рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред URL рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
рд▓реЗрдпрд░ 7-рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
^.*(/summary).*(chelaxe.ru).*$
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 5 рд╡реАрдВ рд╢рд╛рдЦрд╛ рд╕реЗ рд░рд╛рдЙрдЯрд░рдУрдПрд╕ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдирд┐рдЪрд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП,
рдПрдХ рдорд┐рдХреНрд░реЛрдЯрд┐рдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдкред
рдпрд╣рд╛рдВ рд╕реНрд░реЛрдд рдЙрдкрд▓рдмреНрдз
рд╣реИрдВ ред
рдЬрдм рдирд┐рд░реНрдорд╛рдг рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдореЗрдореЛOpenSSL 1.0.1c + libGOST.so + CryptoPro + ruToken рд╕реЗ рдХреБрдВрдЬреАрд╣рдореЗрдВ рдирд┐рд╖рд┐рджреНрдз рд╕рдВрд╕рд╛рдзрди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪ рдорд┐рд▓реАRoskomnadzor рдиреЗ "рдкрд╛рдпрд░реЗрдЯреЗрдб" рдлрд┐рд▓реНрдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯреЛрдВ рдХреА рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреАрд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рд╕реАрдЦрдиреЗ, рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП RegExr рд╕рд╣рдЬ рдЙрдкрдХрд░рдг