基于jetty9 編程構建嵌入式https 服務器

jopen 11年前發布 | 68K 次閱讀 jetty9 Jetty 應用服務器

第一步,命令行下使用jdk的keytool工具生成keystore

keytool -keystore keystore -alias jetty -genkey -keyalg RSA

第二,生成證書

keytool -export -alias jetty -file jetty.crt -keystore keystore

第三,生成OBA文件,這里的yoursslpassword是第一步填寫的密碼

java -cp jetty-all-9.0.5.v20130815.jar org.eclipse.jetty.util.security.Password yoursslpassword

第四,編碼實現https服務器

Server server = new Server();

HttpConfiguration https_config = new HttpConfiguration();
https_config.setSecureScheme("https");
https_config.setSecurePort(8443);
https_config.setOutputBufferSize(32768);
https_config.addCustomizer(new SecureRequestCustomizer());

SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath("keystore");
sslContextFactory.setKeyStorePassword("OBF:1xtb1uo71wg41y0q1y7z1y101wfu1unr1xu7");
sslContextFactory.setKeyManagerPassword("OBF:1xtb1uo71wg41y0q1y7z1y101wfu1unr1xu7");

ServerConnector httpsConnector = new ServerConnector(server,
        new SslConnectionFactory(sslContextFactory,"http/1.1"),
        new HttpConnectionFactory(https_config));
httpsConnector.setPort(8443);
httpsConnector.setIdleTimeout(500000);
server.addConnector(httpsConnector);

WebAppContext webApp = new WebAppContext();
webApp = new WebAppContext();
webApp.setContextPath("/myapp");
webApp.setResourceBase("WebRoot");
webApp.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false");
webApp.setInitParameter("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");
server.setHandler(webApp);

try {
    server.start();
    server.join();
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


第五步,通過瀏覽器訪問 https://localhost:8443/myapp訪問應用。瀏覽器會提示證書不可信任,是否繼續訪問,點是即可。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!