vertx-rx-java에서 Vertex v3.4.1을 사용하여 서버를 실행하고 있습니다. 인증서 기반 인증 (상호 인증)을 사용하도록 설정해야하므로 서버 측에서 인증서 해지 확인을 처리하려고합니다.Vertx 및 Java에서 CRL을 사용한 인증서 해지 처리
addCrlPath method of HttpServerOptions을 사용하려고합니다. 그러나 이미로드 된 CRL이 만료 된 후에도 주어진 '경로'또는 인증서의 CRL 배포 지점 (CDP)에서 CRL을 다시로드하지 않는 것처럼 보입니다. Vertex를 사용하여 프로그래밍 방식으로 구현할 수있는 API/문서를 찾을 수 없습니다.
getTrustMgrFactory method in SSLHelper class의 구현을 살펴 보았습니다. 서버 실행에서만 제공되는 CRL을 선택한다는 느낌이 들었습니다.
그래서, 내 쿼리는 다음과 같습니다
- 나는, 현재로드 된 CRL을 한 번 만료 자동 CDP에서 다운로드 한 최신 CRL을 보장 몇 가지 구성 실종?
- CDP에서 자동으로 다운로드하지 않으면
addCrlPath
방법으로 제공되는 동일한 경로에서 CRL을 다시로드 할 수있는 다른 구성을 사용합니까? - # 1 및 # 2의 Vertx에 내장 된 지원이없는 경우 내장 된 이러한 지원을 제공하는 다른 API가 있습니까?
그렇지 않으면 내 유일한 옵션은 직접 처리하는 것입니다. 다음은
내가이 쿼리를 작성하는 시점에서 내 서버import io.vertx.core.http.ClientAuth;
import io.vertx.core.http.HttpServerOptions;
import io.vertx.core.net.PfxOptions;
import io.vertx.rxjava.core.Vertx;
import io.vertx.rxjava.ext.web.Router;
import io.vertx.rxjava.ext.web.RoutingContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VertxServer {
private static final Logger LOGGER = LoggerFactory.getLogger(VertxServer.class);
private Vertx vertx;
public VertxServer(final Vertx v) {
this.vertx = v;
}
public void init() {
vertx.createHttpServer(getHttpServerOptions())
// getRouter() method handles router configuration.
.requestHandler(req -> getRouter().accept(req))
.rxListen()
.doOnSuccess(server -> LOGGER.info("Started listening to server..."))
.doOnError(e -> LOGGER.error("Unable to listen. Server launch failed", e))
.subscribe(
server -> LOGGER.info("Server launched successfully. {}", server),
e -> LOGGER.error("Server launch failed", e))
;
}
private HttpServerOptions getHttpServerOptions() {
HttpServerOptions options = new HttpServerOptions()
.setHost("127.0.0.1")
.setPort(8085);
.setSsl(true)
.setPfxKeyCertOptions(
new PfxOptions()
.setPath("E:\\temp\\certs\\server.pfx")
.setPassword("servercertpass".toCharArray())
)
setTrustStoreOptions(options);
return options;
}
private void setTrustStoreOptions(final HttpServerOptions options) {
PfxOptions pfxOptions = new PfxOptions()
.setPath("E:\\temp\\certs\\client-cert-root.p12")
.setPassword("clientcertrootpass".toCharArray());
options.setPfxTrustOptions(pfxOptions)
.addCrlPath("E:\\temp\\certs\\crls\\client-certs.crl")
.setClientAuth(ClientAuth.REQUEST);
}
// Other methods here, which are not relevant for this question.
}