Skip to content

CertStoreConfig requires passphrase but error is opaque #3570

Description

@yissachar
HttpClientSSLConfig(cert_store = CertStoreConfig(resource = "filesystem:$certStorePath", format = "PEM"))

Will produce the following exception when bound up:

Caused by:
--
java.lang.NullPointerException
at misk.security.ssl.SslContextFactory.create(SslContextFactory.kt:30)
at misk.security.ssl.SslContextFactory.create(SslContextFactory.kt:19)
at misk.client.HttpClientFactory.create(HttpClientFactory.kt:70)
at misk.client.HttpClientModule$HttpClientProvider.get(HttpClientModule.kt:45)
at misk.client.HttpClientModule$HttpClientProvider.get(HttpClientModule.kt:40)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:86)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:60)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1148)
at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:114)
at misk.client.GrpcClientProvider.get(GrpcClientProvider.kt:72)
at misk.client.GrpcClientProvider.get(GrpcClientProvider.kt:51)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:86)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:60)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:40)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:60)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:113)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:50)
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:146)
at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:101)
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:72)
... 6 more

The fix is to provide any passphrase like so:

HttpClientSSLConfig(cert_store = CertStoreConfig(resource = "filesystem:$certStorePath", format = "PEM", passphrase = ""))

We should either properly treat passphrase as optional or make it a non-null param on CertStoreConfig.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions