我已经创建了密钥和证书,由根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)
最佳答案 我相信这是您的密钥库的路径/位置的问题.
找不到密钥库时抛出此异常,这有点令人困惑.