我对 HTTPS 还很陌生,我正在尝试从 OSGi 包内托管 Jetty HTTPS 服务器。当我在运行配置中将以下属性作为 VM 参数传递时,一切都很好,但由于这对我来说不是一个选项,因此我使用 System.setProperties() 方法在 Activator 的 start 方法内提供参数。
System.setProperty("org.eclipse.equinox.http.jetty.https.port", "9090");
System.setProperty("org.eclipse.equinox.http.jetty.https.enabled", "true");
System.setProperty("org.eclipse.equinox.http.jetty.https.host", "0.0.0.0");
System.setProperty("org.eclipse.equinox.http.jetty.ssl.keystore", "/home/https/keystore.jks");
System.setProperty("org.eclipse.equinox.http.jetty.ssl.password", "password");
使用这种方法,端口 9090 上的 HTTPS 服务器工作正常,但存在两个问题,
相同的网页也在端口 80 上作为 HTTP 提供,但我不想要。即使当我使用时它也在那里:
System.setProperty("org.eclipse.equinox.http.jetty.http.enabled","false");
由于不需要的 HTTP 网页托管在端口 80(系统端口)上,因此我必须以 root 身份调用该包,否则我会收到 Java.net.SocketException: Permission Denied
由于端口 80 上可能托管有其他页面,因此我不想完全禁用 HTTP 或手动从 bundle 中的端口 80 取消注册服务器。
我真的很感激任何有关如何停止此行为而无需手动修改任何其他端口的指示。
最佳答案
关于java - 在 OSGi 内托管 HTTPS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37254948/