2017-07-09 14 views
0

SocketChannelsとSSLEngineを使用せずにjavaでHTTPSサーバーを構築しようとしています。私の主な理由は、com.sunパッケージを使用してビルドし、要求がタイムアウトしたときにそれをテストし、応答した場合には約2分かかりました(デバッガハンドラでは2分もかかります)そして、は200msまで行くための要求を得たが、私はHTTPSを必要と私はSSLEngineのを追加し、それがHTTPの通常のヘッダーのように見えたリクエストをアンラップする場合、要求はそうのように見えた:それはそうあることに基づいてHTTPSプロトコルサーバー要求のアップグレードJavaソケットチャネル

GET/HTTP/1.1 
Host: localhost 
Connection: keep-alive 
Cache-Control: max-age=0 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 
DNT: 1 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.8 

リクエストはHTTPSを使用していません(クロムはウェブサイトが安全ではないと言います)、アップグレードをリクエストしていません。クライアントにアップグレードするように指示するにはどうすればよいですか?私が読んだすべてのページでは、クライアントはアップグレードを要求しなければならず、426コードヘッダー(アップグレードが必要)を送信しようとすると、サーバーは単に接続を終了し、一緒に送信したメッセージを表示します。

答えて

0

回答は簡単ですが、ローカルホスト証明書は何らかの形で有効ではありません。自分のウェブサイトの証明書を作成し、外部からテストし、適切な応答を得ました。私が知る限り、サーバーはクライアントに100%時間のプロトコルを変更するよう要求することはできません。

関連する問題