我已经在vert.x
中创建了HTTPS服务器。
vertx.createHttpServer(
new HttpServerOptions()
.setSsl(true)
.setKeyStoreOptions(new JksOptions()
.setPath("path/to/keystore")
.setPassword("password")
)
).requestHandler( (HttpServerRequest req) -> {
System.out.println("Access.");
req.response().putHeader("Content-Type", "text/html; charset=utf-8");
req.response().end("Hello world!");
// ...
}).listen(80, "localhost");
我已经用keytool
创建了密钥库。
keytool -genkeypair -keystore keystore -storetype jks
我已经成功部署了verticle。但是服务器没有响应。
访问https://localhost没有任何帮助。甚至没有打印日志。
怎么了?
我尝试了以下类似选项。
vertx.createHttpServer(
new HttpServerOptions()
.setSsl(true)
.setKeyStoreOptions(new JksOptions()
.setPath("path/to/keystore")
.setPassword("password")
)
// .setUseAlpn(true)
// .setTrustOptions(new JksOptions()
// .setPath("C:/Recoeve/keystore")
// .setPassword("Xs41Kipid$ps15")
// )
// .setClientAuthRequired(false)
// .setClientAuth(ClientAuth.NONE)
// .addEnabledSecureTransportProtocol(TCPSSLOptions.DEFAULT_ENABLED_SECURE_TRANSPORT_PROTOCOLS.get(1))
// .addEnabledSecureTransportProtocol("TLSv1.3")
// .setEnabledSecureTransportProtocols(TCPSSLOptions.DEFAULT_ENABLED_SECURE_TRANSPORT_PROTOCOLS)
).requestHandler( (HttpServerRequest req) -> {
// ...
}).listen(80, "localhost");
但是代码给出了运行时异常。
答案 0 :(得分:0)
以下代码对我有用:
JksOptions keyOptions = new JksOptions();
keyOptions.setPath("path-to-your/keystore.jks");
keyOptions.setPassword("changeit");
vertx.createHttpServer(
new HttpServerOptions()
.setSsl(true)
.setKeyStoreOptions(keyOptions)
).requestHandler( (HttpServerRequest req) -> {
System.out.println("Access.");
req.response().putHeader("Content-Type", "text/html; charset=utf-8");
req.response().end("Hello SSL world!");
}).listen(8443, "localhost");