HttpsServer 处理程序未被调用

HttpsServer Handlers were not getting called

我正在使用以下 HttpsServer 来实现一个简单的安全服务器。首先,我创建了密钥库并生成了密钥对,并且在密钥库中有一个自签名证书。我正在使用以下代码来设置代码。

server = HttpsServer.create(new InetSocketAddress( SERVER_PORT), conversationCount);
SSLContext sslContext = SSLContext.getInstance("TLS");
char[] password= "XXXXX".toCharArray();
KeyStore ks = KeyStore.getInstance("JKS");
FileInputStream fis = new FileInputStream("server_keystore");
ks.load(fis, password);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, password);
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf.init(ks);
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);

而我的服务器代码如下

server.setHttpsConfigurator( getConfigurator(sslContext));
server.createContext("/", new RootRequestHandler());
server.setExecutor(threadPool);
server.start();
threadPool= Executors.newFixedThreadPool(conversationCount);
threadPool.execute(new Runnable() {
    public void run() {
        System.out.println("Asynchronous task");
    }
});

我的配置器如下所示。

private HttpsConfigurator getConfigurator( SSLContext sslContext) {
    return new HttpsConfigurator(sslContext) {
        @Override
        public void configure (HttpsParameters params) {
            SSLEngine m_engine = sslContext.createSSLEngine();
            final SSLContext context = getSSLContext();
            final SSLParameters sslParams = context.getDefaultSSLParameters();
            params.setNeedClientAuth(false);
            params.setSSLParameters(sslParams);
            params.setCipherSuites(m_engine.getEnabledCipherSuites());
            params.setProtocols(m_engine.getEnabledProtocols());
        }
    };
}

每当我打开 https://localhost:8001/ "This web page is not available" "ERR_CONNECTION_CLOSED" 错误时,都会在浏览器上显示。

我还用单元测试测试了代码,但测试失败并出现以下错误。

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

我知道,每当我从浏览器调用服务器时,我都看到配置代码总是被调用而不是处理程序。即使调用了服务器,请求也不会定向到某些方式。我无法弄清楚我在这里做错了什么。希望有人能帮助我。

在代码中反复试验后,我发现代码没有任何问题,所以我更改了我一直使用的键的类型。然后我意识到错误出在密钥上,并且由于某种原因 EC 密钥不可用而 RSA 密钥可用。