tomcatを配置してhttpとhttpsプロトコルを同時にサポートします.

4368 ワード

今日のプロジェクトではhttpsプロトコルを設定する必要があります.httpとhttpsの2つのプロトコルをサポートしながら、tomcatサーバーを使って、nginxを使って転送しました.
ネット上にtomcatを配置するhttpsプロトコルの記事がたくさんあります.ここで整理します.
一、tomcatを配置してhttpsプロトコルをサポートする.
二つのステップが必要です.セキュリティ証明書の生成とtomcatの設定です.
1.まず、セキュリティ証明書を生成します.
Java環境:SUN社が証明書作成のためのツールkeytoolを提供しています.
JDK 1.4以降のバージョンにはこのツールが含まれています.位置は\bin\keytool.exeです.
cmdコマンドラインを使用して、ディレクトリをtomcatインストールディレクトリ下のbinフォルダに切り替え、コマンドで作成します.
証明書を作成するコマンド:
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "f:\tomcat.keystore"
パラメータの意味は以下の通りです.

ここのパスワードはtomcatです.名前と名前はドメイン名です.その他は状況によって入力します.

以上のコマンドは、非対称鍵のペアと自己署名の証明書f:\tomcat.keystoreを作成します.
あなたが預けたいところに証明書を保存してください.私の保存はD:\Tools\Web\ssl\tomcat.keystoreです.
注意:「名前と名前」はドメイン名であるべきです.名前に負けました.実際に実行しているドメイン名と一致しないと、問題が発生します.
これらの証明書は基本的にcrt、pem証明書ですが、tomcatはkeystoreの拡張子証明書を使っています.これはツールを使って変換します.変換ツールはインターネットで検索できます.多くの資料があります.
2.tomcatプロファイルを変更する
tomcatのインストールディレクトリに位置して、confの下のserver.xmlファイルを見つけて、下記のように注釈されているコードを見つけました.
コメントを削除します.
ここで、パスワードと証明書の位置は、個人の具体的な環境に応じて設定されています.属性パラメータは以下の通りです.
属性
説明
clientAuth
trueに設定すると、TomcatはすべてのSSL顧客に安全証明書を提示してもらい、SSL顧客に対して身分認証を行うように要求しています.
keystone File
keystoreファイルの保存場所を指定して、絶対パスを指定してもいいし、環境変数に対する相対パスを指定してもいいです.この項目が設定されていない場合、デフォルトでは、Tomcatは現在のオペレーティングシステムユーザのユーザディレクトリから「.keystore」という名前のファイルを読みます.
keystorePass
keystoreのパスワードを指定します.この項目が設定されていない場合、Tomcatはデフォルトパスワードとして「changeit」を使用します.
ssl Protocol
ソケットに使用する暗号化/復号プロトコルを指定し、デフォルト値はTLSであり、ユーザはこのデフォルト値を修正すべきではない.
ciphers
ソケットに利用可能な暗号化用のパスワードリストを指定し、複数のパスワード間をコンマ(,)で区切ります.この項目が設定されていない場合、デフォルトではソケットは任意の利用可能なパスワードを使用できます.
ここに来てください.https契約書は配置されています.使えます.https://localhost:8443/あなたのローカルプロジェクトにアクセスして、設定が成功したかどうかを確認します.
正常に訪問できれば、また利用できます.http://localhost:8080/あなたのローカルプロジェクトを訪問して、元のhttpが正常にアクセスできるかどうかを確認します.
二、コンフィギュレーション
もしあなたのプロジェクトがnginxを使用していないなら、以下の内容を無視してください.
私達のプロジェクトはjavaで開発したので、以下の内容はjavaで例を挙げます.
tomcatがhttpsプロトコルをサポートしていない前に、運営維持はnginxを配置したhttpとhttps要求だけをtomcatのhttpプロトコル8080ポートに転送するので、http要求は正常になるが、https要求のもtomcatのhttpプロトコル8080ポートである.具体的にプロジェクトの中に行く時、最も直観的な体現はブラウザーの住所がhttps要求なのに、jspページのすべての静的な資源は全部ロードされていません.例えばcss、JS.これはあなたがjspページでrequest.get Scheme()を使って取得したアクセスプロトコルがhttpであるからです.httpsを使ってプロジェクトにアクセスする場合、httpリソースのロードは禁止されます.
今tomcatは第一歩の構成を経て、httpとhttpsプロトコルを同時にサポートしています.nginxを使って転送する場合、必要です.
1.httpがnginxを通じてtomcatにアクセスする時、http要求8080ポートです.
2.httpsがnginxを通じてtomcatにアクセスする時、またはhttps要求8443ポートである.
ngnixを配置するには、ubstreamノードを2つ配置し、httpにセットして使用し、他のセットはhttpsに使う必要があります.以下の通りです.
upstream http_stream{ 
      server 1.1.1.1:8080; 
      server 1.1.1.2:8080; 
}

upstream https_stream{ 
      server 1.1.1.1:8443; 
      server 1.1.1.2:8443; 
}
次に2セットのserverを配置します.以下の通りです.
server {
        listen       8080;
        server_name  localhost;
 
        location / {
            proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
            proxy_pass http://  /  ;
        }
}

server {
        listen       8443;
        server_name  localhost;
 
        location / {
            proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
            proxy_pass https://  /  ;
        }
}
は、概して上のような意味で、2つのserverはそれぞれ2つのポートを傍受し、現在のポートに基づく要求を現在の構成のアクセスプロトコルに転送する.
ここで、nginxは基本的に配置されています.ブラウザでhttpとhttpsを使ってドメイン名項目にアクセスして、アクセスできるかどうかを確認します.
回り道をしないために、ここで自分でメモして、他の人のものを回して、自分のプロジェクトの中のいくつかの経験を加えて、同行を手伝ってほしいです.
転載先 http://ln-ydc.iteye.com/blog/1330674