HTTP、HTTPS転送プロジェクト

同社の顧客は、突然のシステムへのアクセス権を持っていつものように、システムを照会しますが、外部のネットワークにアクセスすることはできませんしないでください。連絡先の顧客ITは、調査では、システムの要求があるため、ファイアウォールをオフに傍受されていることがわかりました。

 

 

 

 

 これが受け入れられないように移動します。

プロジェクトは、HTTPSを開かなかった理由がどうあるべきかの分析。

私たちは今、プロジェクトのHTTPSアクセスするには、HTTPにアクセスする必要があります。

ターゲット、およびそれを動作させるようになりました。

 

技術への対応:

1、春ブート。

図2に示すように、ノード。

3、nginxの。

4、OpenSSLの。

プラットフォーム:

Windows7の

 

ステップ:

まず、背景HTTP、HTTPSを回します:

1、SSLConfig.javaは、次のコードを追加します。

1      @Bean
 2      公共TomcatServletWebServerFactory servletContainer()
 3      {
 4  
5          TomcatServletWebServerFactoryのTomcat = 新しいTomcatServletWebServerFactory()
 6          {
 7  
8              @Override
 9              保護 ボイドpostProcessContext(コンテキスト・コンテキスト)
 10              {
 11  
12                  = SecurityConstraint securityConstraint 新しいSecurityConstraint()。
13                  securityConstraint.setUserConstraint( "CONFIDENTIAL" )。
14                 SecurityCollectionコレクション= 新しいSecurityCollection();
15                  collection.addPattern( "/ *" )。
16                  securityConstraint.addCollection(コレクション)。
17                  context.addConstraint(securityConstraint)。
18              }
 19          }。
20          tomcat.addAdditionalTomcatConnectors(initiateHttpConnector())。
21          リターンのtomcat。
22      }
 23  
24      プライベートコネクタinitiateHttpConnector()
 25      {
 26          コネクタコネクタ= 新しいですコネクタ( "org.apache.coyote.http11.Http11NioProtocol" );
27          connector.setScheme( "HTTP" );
28          connector.setPort(38080 )。
29          connector.setSecure();
30          connector.setRedirectPort(8443 )。
31          リターンコネクタ。
32      }

2、オープン認証SSLをapplication.properties

1  server.ssl.ciphers = TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_RC4_128_SHA、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_256_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、SSL_RSA_WITH_RC4_128_SHA、TLS_RSA_WITH_3DES_EDE_CBC_SHA、TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
 2  server.ssl.client-AUTH =たい
 3  =真server.ssl.enabled
 4  サーバ.ssl.keyエイリアス= spinfosec
 5  =クラスパスserver.ssl.key店舗:keystore.p12
 6  server.ssl.keyストアパスワード=%密码
 7  server.ssl.keyストア型= PKCS12
 8サーバー。 ssl.protocol = TLS

3、ブラウザアクセス闊歩は、通常の訪問することができます。設定は完了です。

第二に、フロントエンドサーバーのHTTPはHTTPSを回します:

1、ノードサーバ証明書は、証明書関連の文書を保持するためのフォルダを作成します。

2、OpenSSLのツールを使用してドキュメントを作成します。

opensslのダウンロード:https://slproweb.com/products/Win32OpenSSL.html

証明書を生成するには、コマンドライン:

#は、プライベートキーファイル生成:
$ OpenSSLのprivatekey.pem 1024 genrsa -out 

#秘密鍵CSR証明書署名によって生成された
の$のOpenSSL REQを-new -key privatekey.pem -out certsign.csr 

秘密鍵と証明書署名証明書ファイルによって生成された#
$ opensslのX509 -req -in certsign.csr -signkey privatekey.pem -out certificate.crt

3、生成された証明書ファイル:

 4、app.jsは、証明書ファイル(以下スニペット)を引用しました。

1つの VAR HTTPS =必要とする(' HTTPS ' )。
2  
3  // 证书配置
4つの VARのオプション= {
 5      キー:fs.readFileSync(' ./cert/privatekey.pem '' UTF8 ' )、 
 6      CERT:fs.readFileSync(' ./cert/certificate.crt '' UTF8 ' 7  }。
8  VAR HttpsServerを= https.createServer(オプション、APP)。
9  
10  // 启动
11 VAR SSLPORT = 8180 ;
12  httpsServer.listen(SSLPORT、関数(){
 13      はconsole.log(' HTTPSサーバーが実行されます。https:// localhostを:%S ' 、SSLPORT);
 14 })。

5、プロジェクトへのブラウザアクセスは、正常にアクセスすることができます。設定は完了です。

 

第三に、ドメイン名は、HTTPSを使用してプロジェクトにアクセスします。

前提構成:

1、(必要なレコード用)HTTPSサポートドメイン名を開きます。

2、Baiduのクラウドサービスは、Windowsコンピュータにアクセスすることができます。

ステップ:

1. BaiduのクラウドSSLサービス:https://cloud.baidu.com/product/ssl.html

2、購入無料DVタイプの証明書、1年間有効の証明書を選択します。

 3、ファイルの検証を選択し、証明書の要求をクリックしてください。

4は、新しいfileauth.txt上のドメインネームサーバに対応し、Baiduのを待って、指定した文字列に自動的にスキャンサーバクラウドに、成功のメッセージが表示されます。

 5、認証が成功したダウンロードが証明された後、

 6、なぜならリバースプロキシのnginxを使用するので、PEM_Nginxダウンロードを選択しました。

 

 7、nginxのディレクトリの下に置かれた証明書をダウンロードした後、

 

 8、nginx.conf

1台の     サーバ{
 2          聞く        8843を3          サーバー名のmemory.mynatapp.cc。
4  
5          ssl_certificateのmemory.mxxxxxp.cc.crt。
6          ssl_certificate_keyのmemory.mxxxxxp.cc.key。
7  
8          ssl_session_cache共有:SSL:1メートルと、
9          ssl_session_timeout部5m。
10  
11          のssl_ciphers HIGH:!aNULL :! MD5;
12          ssl_prefer_server_ciphers上。
13  
14        位置/ {#wechat
 15          proxy_passのhttps:// localhostを:8181 /。
16        }
 17        位置/ウェブ/ {#web
 18         proxy_passのHTTPS:// localhostを:8180 /。
19        }
 20        位置/ API / {#api
 21         proxy_passのhttps:// localhostの:28443 /を。
22            proxy_http_version 1.1 23            proxy_set_headerは$ http_upgradeをアップグレード。
24            proxy_set_header接続アップグレード25        }
 26    }    

9、効果を確認するには、ブラウザを開いて、nginxの再起動します。

 10、登録システム、適切APIリクエスト。設定は完了です。

 

注意:

1、正式に発足する必要がブラウザ同一生成元ポリシーは、セキュリティを確保していることを保証するために閉じられるようにした後、プロジェクト開発のインタフェースデバッグモード時にクロスドメインを使用しました。

2、最近の安全知識に非常に興味を持って、何の推奨Webセキュリティ関連の書籍がありませんか?

おすすめ

転載: www.cnblogs.com/tomotose/p/11609181.html