2017-01-28 13 views
1

현재 Grizzly Server가 HTTPS로 실행되는 데 문제가 있습니다. 저지와 함께 사용하고 있습니다.보안 Grizzly HttpServer (HTTPS)

그리 즐 버전은 다음과 같습니다 2.3.23

저지 버전

: 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)); 
} 

키 저장소 파일이 키 도구로 생성 된 :

keytool -genkey -keystore ./keystore -alias serverKey -dname 
나는 URL을 열려고하면

는 브라우저 나에게을 알려줍니다

가 연결이 갑자기

여러분의 도움에 감사드립니다 폐쇄 로컬 호스트!

답변

1

Truststore 파일도 추가하여 문제를 해결했습니다.

코드이 지금과 같다 : 이러한 명령으로 생성

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)); 
} 

키 -와 신뢰 파일 : 마법처럼

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 
+0

작품. 감사 – besil