使用SSL / TLS和密钥库配置Jetty

Tim*_*fey 6 java ssl jetty keystore kotlin

我已经创建了密钥和证书,由根CA使用OpenSSL签名。我正在尝试使用server.key文件作为密钥库,并在代码中执行它:

private fun setupHttps(server : Server, port: Int) {
val https = HttpConfiguration()
https.addCustomizer(SecureRequestCustomizer())

val sslFactory = SslContextFactory()
sslFactory.keyStorePath = Paths.get(System.getProperty("user.dir"), "..", "server.key").toString()
sslFactory.setKeyStorePassword("password")

val sslConnector = ServerConnector(
    server,
    SslConnectionFactory(sslFactory, "http/1.1"),
    HttpConnectionFactory(https)
)

sslConnector.port = port
server.connectors = arrayOf(sslConnector)
Run Code Online (Sandbox Code Playgroud)

}

但是我有一个例外:

Exception in thread "main" java.lang.IllegalStateException: no valid keystore
    at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:48)
    at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:998)
    at org.eclipse.jetty.util.ssl.SslContextFactory.load(SslContextFactory.java:252)
    at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:219)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
    at org.eclipse.jetty.server.SslConnectionFactory.doStart(SslConnectionFactory.java:72)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
    at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:270)
    at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
    at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.server.Server.doStart(Server.java:431)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at ru.servicesmarket.server.LaunchKt.main(launch.kt:44)
Run Code Online (Sandbox Code Playgroud)

小智 5

我相信这是您的密钥库路径/位置的问题。当找不到密钥库时会抛出此异常,这有点令人困惑。