- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
目前我在使用 HTTPS 运行 Grizzly 服务器时遇到了问题。我将它与 Jersey 结合使用。
Grizzly 版本是:2.3.23
Jersey 版本:2.24.1
以下是我启动服务器的方式:
public class Main {
public static final String BASE_URI = "https://localhost:8443/api/";
private static final String KEYSTORE_LOC = "I:\\rest-api\\keystore";
//private static final String KEYSTORE_LOC = "./server.cert";
private static final String KEYSTORE_PASS= "somepw123";
public static HttpServer startServer() {
final ResourceConfig rc = new ResourceConfig()
.register(MultiPartFeature.class)
.packages("com.restapi");
SSLContextConfigurator sslCon = new SSLContextConfigurator();
sslCon.setKeyStoreFile(KEYSTORE_LOC);
sslCon.setKeyStorePass(KEYSTORE_PASS);
return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc, true,new SSLEngineConfigurator(sslCon).setClientMode(false).setNeedClientAuth(false));
}
keystore文件是用keytool生成的:
keytool -genkey -keystore ./keystore -alias serverKey -dname
当我尝试打开我的浏览器告诉我的 URL 时:
localhost unexpectedly closed the connection
感谢您的帮助!
最佳答案
还通过添加信任库文件解决了该问题。
代码现在看起来像这样:
public class Main {
public static final String BASE_URI = "https://localhost:8443/api/";
private static final String KEYSTORE_LOC = "./keystore_server";
private static final String KEYSTORE_PASS= "keystorePass";
private static final String TRUSTSTORE_LOC = "./truststore_server";
private static final String TRUSTSTORE_PASS = "truststorePass";
private static HttpServer startServer() {
final ResourceConfig rc = new ResourceConfig()
.register(MultiPartFeature.class)
.packages("com.restapi");
SSLContextConfigurator sslCon = new SSLContextConfigurator();
sslCon.setKeyStoreFile(KEYSTORE_LOC);
sslCon.setKeyStorePass(KEYSTORE_PASS);
sslCon.setTrustStoreFile(TRUSTSTORE_LOC);
sslCon.setTrustStorePass(TRUSTSTORE_PASS);
return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc, true,new SSLEngineConfigurator(sslCon).setClientMode(false).setNeedClientAuth(false));
}
使用这些命令创建的 key 和信任库文件:
keytool -genkey -keyalg RSA -keystore ./keystore_client -alias clientKey
keytool -export -alias clientKey -rfc -keystore ./keystore_client > ./client.cert
keytool -import -alias clientCert -file ./client.cert -keystore ./truststore_server
keytool -genkey -keyalg RSA -keystore ./keystore_server -alias serverKey
keytool -export -alias serverKey -rfc -keystore ./keystore_server > ./server.cert
keytool -import -alias serverCert -file ./server.cert -keystore ./truststore_client
关于java - 安全灰熊 HttpServer (HTTPS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41915302/
我需要让 Grizzly 不改变标题键。 我找到了这个属性PRESERVE_HEADER_CASE,但不知道在哪里配置 有什么想法吗? 问候 最佳答案 从 Mule 3.8.1 开始,这可以通过传递系
我在最后使用快速入门原型(prototype)构建 Jersey Moxy 服务。我的代码工作正常,我可以返回一些 JSON。然而,在我开发的过程中,如果我犯了一个错误,比如说请求处理程序有一个不受支
我正在尝试实现一个检查某些内容的 ContainerRequestFilter。最终,它将从 SSL 客户端证书中提取通用名称,但我还没有。该过滤器在 Grizzly HTTP 服务器(Grizzly
我已经设法在 Jersey、HK2 和一个普通的 GrizzlyServer 中设置了我自己的服务类的注入(inject)(到资源类中)。 (基本上跟着 this example 。) 我现在很好奇将
我正在使用 Grizzly HttpServer,我想在每个响应中添加一个特定的 header 。具体来说,我想避免 CORS通过添加“Access-Control-Allow-Origin” hea
a我正在尝试将我的 jersey-jar 文件从 1x 升级到 2.8 版本。要下载它们,每个人都指着here 。显然,我可以下载并导入所有这些,但我相信 5-6 个对我来说应该足够了。我已经搜索过,
我创建了一个简单的 project on github (查看那里的来源)。 如果我在 Eclipse 中将项目作为 Maven 项目导入并运行它,我可以 curl XML/JSON 资源。 如果我用
我有一个使用 Grizzly 1.9.59 的 Java 应用程序,显然 1.5.x 版本 2.0 也发布了一个全新且不兼容的 API。两个版本都在开发中,1.x 是遗留版本。 因此,考虑到正在开发的
我有一个用于 Web 服务的 wsdl 文件。我想测试客户端和服务器之间的交互。为此,我运行了带有嵌入式 grizzly 的模拟服务器。 关于实现模拟服务器的问题。我使用 wsimport 从 wsd
想象一个后 REST 端点,例如: @POST @Path("/cbo/{param1}/{param2}") public Response updateCbo() { //do somet
我是一名优秀的程序员,十分优秀!