рдореИрдВрдиреЗ рдкреЛрдХрд░ рд░реВрдо рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдХреИрд╕реЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ "рд╣рдо C # рдореЗрдВ рдЕрдкрдирд╛ рдорд┐рддреН рдпрдо SSL рдкреНрд░реЙрдХреНрд╕реА рд▓рд┐рдЦрддреЗ рд╣реИрдВ"

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

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


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

рд▓рдХреНрд╖реНрдп


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

рдкреНрд░рдпреЛрдЧ рдХрд░рдХреЗ, рдореИрдВ рдЙрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬреЛ рд╣рдореЗрд╢рд╛ рдзрд╛рд░рдг рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдорд┐рддреНрдо рд╣рдорд▓реЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрд╛ред

рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕реНрд░реЛрдд рдЬреНрдЮрд╛рдд рд╣реИ, рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рдЬреНрдЮрд╛рдд рд╣реИ - lb6.playdata.co.ukред

рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди


рдЕрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╡реЗрдЬ рдХрд░рдирд╛ рдЬрд░реВрд░реА рдерд╛ред рдореИрдВрдиреЗ рдХреБрдЫ рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА - рдореИрдВрдиреЗ 127.0.0.1 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдбреЛрдореЗрди рдирд╛рдо рдЬреЛрдбрд╝реЗред рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ lb6.playdata.co.uk рд╣реИ, рдЕрд░реНрдерд╛рдд рджреЛрдиреЛрдВ lb1.playdata.co.uk рдФрд░ lb8.playdata.co.uk рд╣реИред рдЙрд╕рдиреЗ рдЙрдирдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдореЗрдЬрдмрд╛рди рдореЗрдВ рдерд╛ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╕рд┐рддрд╛рд░реЛрдВ рдХреЗ рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреЛрдХрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдЕрджреНрднреБрддред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╣рдорд╛рд░реА рдорд╢реАрди рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪрд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред


рдкреНрд░реЙрдХреНрд╕реА


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

SSL рдкрд░ рдорд┐рдЯрдо


рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ SSL рдкрд░ рдПрдХ MitM рд╣рдорд▓реЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕реЗ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рд╣реИ; рджреВрд╕рд░рд╛ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╣реИред
рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рдЖрдЧреЗ рдирд╣реАрдВ рднреЗрдЬреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рддрдерд╛рдХрдерд┐рдд рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред C # рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд NetworkStream рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рд░реНрдорд┐рдд SslStream рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░реЗрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ SslStream рд╡рд░реНрдЧ рдХреЗ AuthenticateAsServer рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

X509 рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдлрд╝рд╛рдЗрд▓ рдореИрдХреНрд╡реЗрд░реНрдЯ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрдВрд╕реЛрд▓ рд╕реЗ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рдЙрдард╛рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: C # рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ рд╕рдВрдЪрд╛рд░ ред рдирд╛рдо рдХреЗ рд▓рд┐рдП, * .playdata.co.uk рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпрд╣ рдирд╛рдо рдкреЛрдХрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдбреЛрдореЗрди рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред
makecert -n CN=MyCA -cy authority -a sha1 -sv тАЬMyCA.pvkтАЭ -r тАЬMyCA.cerтАЭ //   certmgr -add -all -c тАЬMyCA.cerтАЭ -s -r LocalMachine Root //      makecert -n CN=*.playdata.co.uk -ic MyCA.cer -iv MyCA.pvk -a sha1 -sky exchange -pe -sr currentuser -ss my SslServer.cer //   

рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рдирд┐рдЬреА рдХреБрдВрдЬреА рдФрд░ CA рдХреБрдВрдЬреА (рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг) рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реА рдХреБрдВрдЬреА рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдПред CA рдХреБрдВрдЬреА рдХреЛ "рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА", рдФрд░ рд╡реЙрдЗрд▓рд╛ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ! рдпрджрд┐ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдХреБрдВрдЬреА рджрд░реНрд╢рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХреБрдВрдЬреА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕реЗ рд╡реИрдз рдорд╛рдирддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдкреЛрдХрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред


рд╣рдо рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрде рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рд╣рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рддрдХ рдПрдХ SSL рдХрдиреЗрдХреНрд╢рди рдорд┐рд▓реЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рднреЗрдЬреЗрдЧрд╛ред рдЕрдм рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЙрд╕рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЙрддреНрддрд░ рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдорд┐рдЯрдо рд╣рдорд▓реЗ рдХреЗ рджреВрд╕рд░реЗ рдЪрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рд╕рд░реНрд╡рд░ рддрдХ рдПрдХ рдПрд╕рдПрд╕рдПрд▓ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ NetworkStream рдХреЗ рдКрдкрд░ SslStream рднреА рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ AuthenticateAsClient рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ SSL рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░реЛрд╕реЗрд╕ C #
 var certificate = new X509Certificate("SslServer.cer", "123"); var clientStream = new SslStream(client.GetStream(), false); clientStream.AuthenticateAsServer(certificate, false, System.Security.Authentication.SslProtocols.Default, false); var server = new TcpClient("200.26.205.63", 4520); var serverSslStream = new SslStream(server.GetStream(), false, SslValidationCallback, null); serverSslStream.AuthenticateAsClient("lb3.playdata.co.uk"); 


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

рдирд┐рд╖реНрдХрд░реНрд╖


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

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


рдорд┐рддреБ рдЫрдВрдж рдХрд╛ рд╕реВрддреНрд░
 using System; using System.Diagnostics; using System.IO; using System.Net; using System.Net.Security; using System.Net.Sockets; using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; using ConnectionAnalizer; namespace MITMProxy { class Program { static readonly TcpListener Listener = new TcpListener(IPAddress.Any, 4520); const int BufferSize = 4096; static void Main() { Listener.Start(); new Task(() => { while (true) { var client = Listener.AcceptTcpClient(); new Task(() => AcceptConnection(client)).Start(); } }).Start(); Debug.WriteLine("Server listening on port 4502. Press enter to exit."); Console.ReadLine(); Listener.Stop(); } private static void AcceptConnection(TcpClient client) { try { var certificate = new X509Certificate("SslServer.cer", "123"); var clientStream = new SslStream(client.GetStream(), false); clientStream.AuthenticateAsServer(certificate, false, System.Security.Authentication.SslProtocols.Default, false); var server = new TcpClient("200.26.205.63", 4520); var serverSslStream = new SslStream(server.GetStream(), false, SslValidationCallback, null); serverSslStream.AuthenticateAsClient("lb3.playdata.co.uk"); new Task(() => ReadFromClient(client, clientStream, serverSslStream)).Start(); new Task(() => ReadFromServer(serverSslStream, clientStream)).Start(); } catch (Exception ex) { Console.WriteLine(ex.Message); throw; } } private static bool SslValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors) { return true; } private static void ReadFromServer(Stream serverStream, Stream clientStream) { var message = new byte[BufferSize]; while (true) { int serverBytes; try { serverBytes = serverStream.Read(message, 0, BufferSize); clientStream.Write(message, 0, serverBytes); } catch { break; } if (serverBytes == 0) { break; } } } private static void ReadFromClient(TcpClient client, Stream clientStream, Stream serverStream) { var message = new byte[BufferSize]; var fileInfo = new FileInfo("client"); if (!fileInfo.Exists) fileInfo.Create().Dispose(); using (var stream = fileInfo.OpenWrite()) { while (true) { int clientBytes; try { clientBytes = clientStream.Read(message, 0, BufferSize); } catch { break; } if (clientBytes == 0) { break; } serverStream.Write(message, 0, clientBytes); memoryStream.Write(message, 0, clientBytes); stream.Write(message, 0, clientBytes); } client.Close(); } } } } 

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


All Articles