惑星間ファイルシステム-IPFSのグローバルゲートウェイまたはサイトをローカライズします

自動的にこれを行わないローカルゲートウェイIPFSサイトに切り替える方法を学習します。 StunnelにバンドルされているOpenSSLを使用して、一般的なSSL証明書を作成します。







思い出させてください:InterPlanetary File Systemは、新しい分散ファイル共有ネットワーク(HTTPサーバー、 コンテンツ配信ネットワーク )です。 これについては、 「惑星間ファイルシステムIPFS」という記事で説明しました。

画像







たとえば、グローバルIPFSゲートウェイgateway.ipfs.ioを使用して、このアドレスをローカルIPFSゲートウェイにリダイレクトします。







条件:標準ポート8080 IPFSゲートウェイをインストールして動作しています。







  1. hostsファイルで 、IPFSゲートウェイからダウンロードするドメインを追加します。







    127.0.0.1 gateway.ipfs.io
          
          





  2. Stunnelをインストールして構成します。

    stunnel.conf







     ;       ,        [https gateway] accept = 127.0.0.1:8443 connect = 127.0.0.1:8080 cert = stunnel.pem TIMEOUTclose = 0 ;    443  HTTPS [https] accept = 127.0.0.1:443 connect = 127.0.0.1:8080 cert = stunnel.pem TIMEOUTclose = 0 ;    80  HTTP [http] client = yes accept = 127.0.0.1:80 connect = 127.0.0.1:443
          
          





    したがって、クライアントをIPFSゲートウェイに接続する3つの追加ポート(433、8443、80)を開きます。







  3. 証明書とキーを作成します。







    3.1。 makecert.cmdを構成のあるディレクトリにコピーします







     echo off %~d0 cd %~p0 set STUNNELBIN = ..\bin set PATH=%STUNNELBIN%;%PATH%; rem //   openssl        PEM rem // openssl    ,               rem //   openssl    PEM  DER   Windows rem //    PEM    Firefox if not exist "rootkey.pem" ( echo [ req ] >openssl.root.cnf echo distinguished_name = req_distinguished_name >>openssl.root.cnf echo [v3_ca] >>openssl.root.cnf echo subjectKeyIdentifier = hash >>openssl.root.cnf echo authorityKeyIdentifier = keyid:always,issuer:always >>openssl.root.cnf echo basicConstraints = critical, CA:TRUE >>openssl.root.cnf echo keyUsage = keyCertSign, cRLSign >>openssl.root.cnf echo [ req_distinguished_name ] >>openssl.root.cnf openssl.exe req -newkey rsa:4096 -x509 -sha256 -days 5480 -config openssl.root.cnf -extensions v3_ca -utf8 -subj "/CN=127.0.0.1" -out rootcert.pem -keyout rootkey.pem openssl.exe x509 -outform der -in rootcert.pem -out rootcert.crt del openssl.root.cnf ) rem //        if not exist "gatewaykey.pem" ( openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out gatewaykey.pem ) rem //     if not exist "gateway.csr" ( echo [ req ] >openssl.req.cnf echo req_extensions = v3_req >>openssl.req.cnf echo distinguished_name = req_distinguished_name >>openssl.req.cnf echo [ req_distinguished_name ] >>openssl.req.cnf echo [ v3_req ] >>openssl.req.cnf echo basicConstraints = CA:FALSE >>openssl.req.cnf echo keyUsage = nonRepudiation, digitalSignature, keyEncipherment >>openssl.req.cnf openssl req -new -key gatewaykey.pem -days 1096 -batch -utf8 -subj "/CN=127.0.0.1" -config openssl.req.cnf -out gateway.csr del openssl.req.cnf ) rem //       ,   index.txt     DNS . if exist "index.txt" ( set /p index=<index.txt ) if not exist "index.txt" ( set index=2 ) rem //   openssl.cnf         . if not exist "openssl.cnf" ( echo basicConstraints = CA:FALSE >openssl.cnf echo extendedKeyUsage = serverAuth >>openssl.cnf echo subjectAltName=@alt_names >>openssl.cnf echo [alt_names] >>openssl.cnf echo IP.1 = 127.0.0.1 >>openssl.cnf echo DNS.1 = localhost >>openssl.cnf set index=2 del "index.txt" ) rem //     openssl.cnf ,         . :NEXT set /a aindex=%index% + 1 set /a bindex=%index% + 2 set domain=%1 if !%domain% == ! ( set /p domain=enter domain name or space: ) if not !%domain% == ! ( echo DNS.%index% = %domain% >>openssl.cnf echo DNS.%aindex% = *.%domain% >>openssl.cnf echo %bindex% >index.txt set index=%bindex% shift goto NEXT ) del gateway.pem rem //   IPFS  openssl x509 -req -sha256 -days 1096 -in gateway.csr -CAkey rootkey.pem -CA rootcert.pem -set_serial %RANDOM%%RANDOM%%RANDOM%%RANDOM% -extfile openssl.cnf -out gateway.pem rem //      stunnel.pem,      stunnel copy /b gateway.pem+gatewaykey.pem stunnel.pem rem //       pause
          
          





    3.2。 打ち上げ







     makecert.cmd ipfs.io
          
          





    このスクリプトを初めて実行すると、ルート証明書が作成されます(firefoxの場合はrootcert.pem、残りの場合はrootcert.crt)-パスワードを設定する必要があるキー。 ルート証明書は、ブラウザおよびオペレーティングシステムの信頼されたルート証明書ストアに追加する必要があります。









次に、ゲートウェイ用の証明書が自動的に作成されます。証明書は、サービスを提供するドメインを指定する必要があります。







  1. stunnelを再起動します







    reload.cmd







     echo off %~d0 cd %~p0 set STUNNELBIN = ..\bin set PATH=%STUNNELBIN%;%PATH%; stunnel -install -quiet stunnel -start -quiet stunnel -reload -quiet
          
          







これで、gateway.ipfs.ioはローカルゲートウェイで動作します。 同様に、IPFSでホストされているどのサイトでも実行できます。







テスト用のWebサイト: ivan386.ml







GitHub: InterPlanetary File Systemのトンネル設定







ソース:







  1. その認証局-5つのOpenSSLチーム
  2. Web PKI x509証明書の入門書
  3. man stunnel TLSプロキシ


「惑星間ファイルシステム」に関する他の記事:







  1. 「IPFS惑星間ファイルシステム」
  2. IPFS惑星間ファイルシステムでサイトを公開します
  3. Windows用のIPFS惑星間ファイルシステムでサイトをホストします
  4. これ以上ネットワークにコピーする必要はありません



All Articles