use of io.vertx.core.net.PemKeyCertOptions in project vertx-examples by vert-x3.
the class Server method start.
@Override
public void start() throws Exception {
HttpServer server = vertx.createHttpServer(new HttpServerOptions().setUseAlpn(true).setSsl(true).setPemKeyCertOptions(new PemKeyCertOptions().setKeyPath("server-key.pem").setCertPath("server-cert.pem")));
server.requestHandler(req -> {
req.response().putHeader("content-type", "text/html").end("<html><body>" + "<h1>Hello from vert.x!</h1>" + "<p>version = " + req.version() + "</p>" + "</body></html>");
}).listen(8443);
}
use of io.vertx.core.net.PemKeyCertOptions in project VX-API-Gateway by EliMirren.
the class VxApiApplication method createHttpsServer.
/**
* 创建https服务器
*
* @param createHttp
*/
public void createHttpsServer(Handler<AsyncResult<Void>> createHttps) {
this.httpsRouter = Router.router(vertx);
httpsRouter.route().handler(this::filterBlackIP);
httpsRouter.route().handler(CookieHandler.create());
SessionStore sessionStore = null;
if (vertx.isClustered()) {
sessionStore = ClusteredSessionStore.create(vertx);
} else {
sessionStore = LocalSessionStore.create(vertx);
}
SessionHandler sessionHandler = SessionHandler.create(sessionStore);
sessionHandler.setSessionCookieName(appOption.getSessionCookieName());
sessionHandler.setSessionTimeout(appOption.getSessionTimeOut());
httpsRouter.route().handler(sessionHandler);
httpsRouter.route().handler(BodyHandler.create().setUploadsDirectory("../temp/file-uploads").setBodyLimit(appOption.getContentLength()));
// 跨域处理
if (corsOptions != null) {
CorsHandler corsHandler = CorsHandler.create(corsOptions.getAllowedOrigin());
corsHandler.allowedHeaders(corsOptions.getAllowedHeaders()).allowCredentials(corsOptions.isAllowCredentials()).exposedHeaders(corsOptions.getExposedHeaders()).allowedMethods(corsOptions.getAllowedMethods()).maxAgeSeconds(corsOptions.getMaxAgeSeconds());
httpsRouter.route().handler(corsHandler);
}
// 创建https服务器
serverOptions.setSsl(true);
VxApiCertOptions certOptions = serverOptions.getCertOptions();
if (certOptions.getCertType().equalsIgnoreCase("pem")) {
serverOptions.setPemKeyCertOptions(new PemKeyCertOptions().setCertPath(certOptions.getCertPath()).setKeyPath(certOptions.getCertKey()));
} else if (certOptions.getCertType().equalsIgnoreCase("pfx")) {
serverOptions.setPfxKeyCertOptions(new PfxOptions().setPath(certOptions.getCertPath()).setPassword(certOptions.getCertKey()));
} else {
LOG.error("创建https服务器-->失败:无效的证书类型,只支持pem/pfx格式的证书");
createHttps.handle(Future.failedFuture("创建https服务器-->失败:无效的证书类型,只支持pem/pfx格式的证书"));
return;
}
Future<Boolean> createFuture = Future.future();
vertx.fileSystem().exists(certOptions.getCertPath(), createFuture);
createFuture.setHandler(check -> {
if (check.succeeded()) {
if (check.result()) {
// 404页面
httpsRouter.route().order(999999).handler(rct -> {
HttpServerResponse response = rct.response();
if (appOption.getNotFoundContentType() != null) {
response.putHeader("Content-Type", appOption.getNotFoundContentType());
}
response.end(appOption.getNotFoundResult());
});
// 如果在linux系统开启epoll
if (vertx.isNativeTransportEnabled()) {
serverOptions.setTcpFastOpen(true).setTcpCork(true).setTcpQuickAck(true).setReusePort(true);
}
vertx.createHttpServer(serverOptions).requestHandler(httpsRouter::accept).listen(serverOptions.getHttpsPort(), res -> {
if (res.succeeded()) {
System.out.println(appOption.getAppName() + " Running on port " + serverOptions.getHttpsPort() + " by HTTPS");
createHttps.handle(Future.succeededFuture());
} else {
System.out.println("create HTTPS Server failed : " + res.cause());
createHttps.handle(Future.failedFuture(res.cause()));
}
});
} else {
LOG.error("执行创建https服务器-->失败:无效的证书或者错误的路径:如果证书存放在conf/cert中,路径可以从cert/开始,示例:cert/XXX.XXX");
createHttps.handle(Future.failedFuture("无效的证书或者错误的路径"));
}
} else {
LOG.error("执行创建https服务器-->失败:无效的证书或者错误的路径:如果证书存放在conf/cert中,路径可以从cert/开始,示例:cert/XXX.XXX", check.cause());
createHttps.handle(Future.failedFuture(check.cause()));
}
});
}
use of io.vertx.core.net.PemKeyCertOptions in project vertx-openshift-it by cescoffier.
the class HelloHttp2Verticle method start.
@Override
public void start() throws Exception {
vertx.exceptionHandler(Throwable::printStackTrace);
HttpServer server = vertx.createHttpServer(new HttpServerOptions().setUseAlpn(true).setSsl(true).setPemKeyCertOptions(new PemKeyCertOptions().setKeyPath("server-key.pem").setCertPath("server-cert.pem")));
server.requestHandler(req -> {
System.out.println("Handling request on Aloha " + req.version());
req.response().putHeader("content-type", "text/html").end("<html><body>" + "<h1>Aloha from vert.x!</h1>" + "<p>version = " + req.version() + "</p>" + "</body></html>");
}).listen(8081);
}
use of io.vertx.core.net.PemKeyCertOptions in project vert.x by eclipse.
the class KeyStoreTest method testKeyCertValue.
@Test
public void testKeyCertValue() throws Exception {
PemKeyCertOptions options = Cert.SERVER_PEM.get();
Buffer key = vertx.fileSystem().readFileBlocking(options.getKeyPath());
options.setKeyValue(null).setKeyValue(key);
Buffer cert = vertx.fileSystem().readFileBlocking(options.getCertPath());
options.setCertValue(null).setCertValue(cert);
testKeyStore(options);
}
use of io.vertx.core.net.PemKeyCertOptions in project vert.x by eclipse.
the class KeyStoreTest method testKeyCertOptions.
@Test
public void testKeyCertOptions() throws Exception {
PemKeyCertOptions options = new PemKeyCertOptions();
assertNull(options.getKeyPath());
String randString = TestUtils.randomAlphaString(100);
assertEquals(options, options.setKeyPath(randString));
assertEquals(randString, options.getKeyPath());
assertNull(options.getCertPath());
randString = TestUtils.randomAlphaString(100);
assertEquals(options, options.setCertPath(randString));
assertEquals(randString, options.getCertPath());
}
Aggregations