私はhttpsアクセスを許可したいが埋め込みJetty 9を使用していますが、httpは使用しません。HTTPSでの埋め込みJetty 9の使用
私はJetty web.xmlで簡単にリダイレクトを設定できますが、そのファイルは埋め込みバージョンにはありません。私は、任意のファイルを使用して、埋め込みバージョンからそのファイルを指すことができることを知っていますが、これは簡単であるはずです。
私はこれをここで検索して見つけました。http://blog.anvard.org/articles/2013/10/05/jetty-ssl-server.html著者は「もちろん、HTTPコネクタを取り外すだけでHTTP/Sの使用を強制できます」と述べています。
だから私は、まさにこのでした:
Server server = new Server();
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath(keystoreFile.getAbsolutePath());
sslContextFactory.setKeyStorePassword(Keys.DOMAIN_CERTIFICATE_JKS_KEYSTORE_PASSWORD);
sslContextFactory.setKeyManagerPassword(Keys.DOMAIN_CERTIFICATE_KEY_MANAGER_PASSWORD);
HttpConfiguration httpsConfiguration = new HttpConfiguration();
SecureRequestCustomizer secureRequestCustomizer = new SecureRequestCustomizer();
httpsConfiguration.addCustomizer(secureRequestCustomizer);
ServerConnector serverConnector = new ServerConnector(server,
new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
new HttpConnectionFactory(httpsConfiguration));
serverConnector.setHost("192.168.0.5");
serverConnector.setPort(9443);
serverConnector.setIdleTimeout(15000);
server.setConnectors(new Connector[] { serverConnector });
問題:それが動作するようには思えません。 httpsは正常に動作していますが、httpにアクセスすると、予期されるjson応答ではなく、200 OK
の応答が返されます。したがって、サーバーはリクエストを処理しているように見えますが、何かを間違って暗号化します。それとも私は何かを見落としてしまったのですか?
-
「私はhttpにアクセスします」と言うと、9443以上の平文httpを使用していますか? –
はい。私は 'http:// ... 'をブラウザに入力し、何かを暗号化して戻しました。非httpポートへのリダイレクトがないと正常ですか? –
それは 'http:// xxxxx:9443'ですか?これは、暗号化ハンドシェイクを受け取ること、またはプレーンテキストがサポートされていないという通知を受けることが完全に予想されるためです。 –