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

时间:2017-02-25 07:20:14

标签: java ssl jetty kotlin keystore

我已经创建了密钥和证书,由根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)

}

但我有这个例外:

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)

1 个答案:

答案 0 :(得分:3)

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