diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/SecurityUtility.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/SecurityUtility.java index a08ec87b63820..a1f4350b1d155 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/SecurityUtility.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/SecurityUtility.java @@ -115,6 +115,16 @@ public static Provider getProvider() { } private static Provider loadConscryptProvider() { + Class conscryptClazz; + + try { + conscryptClazz = Class.forName("org.conscrypt.Conscrypt"); + conscryptClazz.getMethod("checkAvailability").invoke(null); + } catch (Throwable e) { + log.warn("Conscrypt isn't available. Using JDK default security provider.", e); + return null; + } + Provider provider; try { provider = (Provider) Class.forName(CONSCRYPT_PROVIDER_CLASS).getDeclaredConstructor().newInstance(); @@ -142,7 +152,6 @@ private static Provider loadConscryptProvider() { // contains the workaround. try { HostnameVerifier hostnameVerifier = new TlsHostnameVerifier(); - Class conscryptClazz = Class.forName("org.conscrypt.Conscrypt"); Object wrappedHostnameVerifier = conscryptClazz .getMethod("wrapHostnameVerifier", new Class[]{HostnameVerifier.class}).invoke(null, hostnameVerifier);