もちろん、RuNetで今週最も議論されたニュースは、法律139-FZの採択とその結果です。 当社がホスティングサービスを提供しているという事実により、データベースへのお客様のリソースの追加にタイムリーに対応するために、完全なレジストリデータベースにアクセスする必要がありました。 これは、たとえば、IPによるWebホスティングサーバーのブロックの場合、無害な他のクライアントが被害を受ける可能性があるため、リソースのブロックについて顧客に通知する必要があるという事実によるものです。 残念ながら、そのようなアクセスを取得することは最も明白なことではなかったため、このクエストを完了した結果を共有したいと思います。
この記事では、技術的な側面に焦点を当て、問題の倫理的および政治的側面について議論することを避けたいと思います。 アクティブなユーザーはすでにこのトピックに不満を表明しており、lurkomoryeを使ってRutrekerを後悔し、以前にリソースの禁止をバイパスすることについて考えています。
現時点では、禁止されているリソースの単一のレジストリへのアクセスには、次の2つのタイプが想定されています。
- 登録ホームページの検索フォームのフォームのすべてのインターネットユーザーのために。 各リクエストはキャプチャ入力を必要とします。さらに、フォームは実際、事前に知られている特定のリソースのブロックに関する情報を取得する問題を解決します。 サイトがURLによって禁止されている場合、フォームにドメイン名を入力しても結果は得られません。 例:
ww.xapka.com-空、http://www.xapka.com/-ロックに関する情報。 - 「通信事業者」セクションの禁止リソースのデータベースの完全なダンプの形で。 captchaを入力する必要があるWebフォーム 、またはSOAPサービスを介してアクセスできます。 WSDLアドレス: www.zapret-info.gov.ru/services/OperatorRequest/?wsdl
2番目の場合、データベースをアンロードする各リクエストは、PKCS#7形式の電子デジタル署名で署名し、リクエストとともにアンタイド署名を送信する必要があります。 理想的には、私たちは次のようなものを想像しました:EDSを購入し、通常のDebianを入手し、リクエストに自動署名するための適切なソフトウェアをそこに置き、SOAPを介してzapret-infoサーバーと通信するスクリプトを記述し、リクエストを形成し、署名し、ダンプをダウンロードし、多くのヒューリスティックをダウンロードしますメソッドは、リストのリソースが私たちのものであるかどうかをチェックします。
すべてがシンプルに思えますが、実際はやや複雑で長いことがわかりました。
デジタル署名
zapret-infoサーバーは、有効なデジタル署名なしでスクリプトをテストできる「サンドボックス」を提供しないため、最初に行うことは、スクリプトの取得に関与することです。
信頼できる認証センターで証明書を購入して、資格のある電子署名を作成できます。 デフォルトでは、ドキュメントに署名するすべてのCAは、CryptoPROファミリーのプログラム(CryptoARM、cryptcp)の使用を推奨しています。 残念なことに、このさまざまなソフトウェア製品の使用は、いくつかの事実によって隠れています。
- CryptoPROライセンスがEDSキットに含まれている場合、おそらくWindows用に設計されています。
- CryptoPRO自体は、何かに署名する方法、および署名するツールを知らない-別のライセンスと購入が必要です。
- ライセンスに関する質問はまだあります(1台のワークステーションまたは1台のサーバーのライセンスが必要です)。
そのため、インターネットでの簡単な検索により、Rutokenを使用した簡単なアクションの助けを借りて、通常のOpenSSLの使用方法を学ぶことができるという情報が得られました。 私たちの行動の簡単な概要はこれです:
- P12FromGostCSPユーティリティを使用して、Windowsの暗号コンテナーからPKCS#12形式でキーをエクスポートします
- PEMに変換する
- openssl.conf構成でパラメーターを設定する
最初に、セクションへ:
openssl_conf = openssl_def
:
[openssl_def] engines=engine_section [engine_section] gost=gost_section [gost_section] engine_id=gost default_algorithms=ALL
- , :
$ echo "Test" > document.txt $ openssl smime -sign -binary -signer ~/sign/gost.crt -inkey ~/sign/gost_nopass.key -outform PEM -in document.txt -out document.txt.sign
( «, PKCS#7»). — .
, . , : «! ». :
- XML-, .
- xml- windows-1251.
- XML declaration string (.. , , ).
. SOAP sendRequest(), base64 , . , ( getResult(), ).
, . :
! ( www.zapret-info.gov.ru/tooperators)
: support@rsoc.ru, , . zip-, .
, . :
1. , ;
2. — , , ;
3. ;
4. — , .
:
- SOAP- suds
- lxml.builder xml declaration string, xml - :
from datetime import datetime from dateutil.tz import tzlocal from lxml import etree from lxml.builder import E request_xml = E.request( E.requestTime(datetime.now(tzlocal()).isoformat()), E.operatorName(settings.NETANGELS_OPERATOR_NAME), E.inn(settings.NETANGELS_INN), E.ogrn(settings.NETANGELS_OGRN), E.email(settings.NETANGELS_EMAIL), ) # utf-8 :-( request_str = etree.tostring(request_xml, xml_declaration=True, encoding='windows-1251').replace("'", '"')
- linux : « ?» Windows :-)
- , .
- «», .
- , , .