Skip to content

Do not publish expired CA certificates #625

@siegfriedweber

Description

@siegfriedweber

Expired CA certificates should not be published or there should be an option to prevent this.

The secret-operator publishes all CA certificates from the Secret secret-provisioner-tls-ca into the file ca.crt of the TLS volumes.

At least OpenSearch cannot handle this:

org.opensearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to load plugin class [org.opensearch.security.OpenSearchSecurityPlugin]
        at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:185) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.OpenSearch.execute(OpenSearch.java:172) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:104) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138) ~[opensearch-cli-2.19.0.jar:2.19.0]
        at org.opensearch.cli.Command.main(Command.java:101) ~[opensearch-cli-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:138) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:104) ~[opensearch-2.19.0.jar:2.19.0]
Caused by: java.lang.IllegalStateException: failed to load plugin class [org.opensearch.security.OpenSearchSecurityPlugin]
        at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:818) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:757) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:551) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:197) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.node.Node.<init>(Node.java:524) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.node.Node.<init>(Node.java:451) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:242) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:242) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:404) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:181) ~[opensearch-2.19.0.jar:2.19.0]
        ... 6 more
Caused by: java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[?:?]
        at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:809) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:757) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:551) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:197) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.node.Node.<init>(Node.java:524) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.node.Node.<init>(Node.java:451) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:242) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:242) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:404) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:181) ~[opensearch-2.19.0.jar:2.19.0]
        ... 6 more
uncaught exception in thread [main]
Caused by: org.opensearch.OpenSearchException: Invalid certificates
        at org.opensearch.security.ssl.config.KeyStoreUtils.validateKeyStoreCertificates(KeyStoreUtils.java:161) ~[?:?]
        at org.opensearch.security.ssl.config.TrustStoreConfiguration.createTrustManagerFactory(TrustStoreConfiguration.java:61) ~[?:?]
        at org.opensearch.security.ssl.SslConfiguration.lambda$buildServerSslContext$0(SslConfiguration.java:84) ~[?:?]
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) ~[?:?]
        at org.opensearch.security.ssl.SslConfiguration.buildServerSslContext(SslConfiguration.java:73) ~[?:?]
        at org.opensearch.security.ssl.SslContextHandler.<init>(SslContextHandler.java:49) ~[?:?]
        at org.opensearch.security.ssl.SslContextHandler.<init>(SslContextHandler.java:45) ~[?:?]
        at org.opensearch.security.ssl.SslSettingsManager.lambda$buildSslContexts$0(SslSettingsManager.java:104) ~[?:?]
        at java.base/java.util.Optional.ifPresentOrElse(Optional.java:196) ~[?:?]
        at org.opensearch.security.ssl.SslSettingsManager.buildSslContexts(SslSettingsManager.java:103) ~[?:?]
        at org.opensearch.security.ssl.SslSettingsManager.<init>(SslSettingsManager.java:88) ~[?:?]
        at org.opensearch.security.ssl.OpenSearchSecuritySSLPlugin.<init>(OpenSearchSecuritySSLPlugin.java:249) ~[?:?]
        at org.opensearch.security.OpenSearchSecurityPlugin.<init>(OpenSearchSecurityPlugin.java:326) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[?:?]
        at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:809) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:757) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:551) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:197) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.node.Node.<init>(Node.java:524) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.node.Node.<init>(Node.java:451) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:242) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:242) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:404) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:181) ~[opensearch-2.19.0.jar:2.19.0]
        ... 6 more
Caused by: java.security.cert.CertificateExpiredException: NotAfter: Mon Jul 28 14:14:05 UTC 2025
        at java.base/sun.security.x509.CertificateValidity.valid(CertificateValidity.java:277) ~[?:?]
        at java.base/sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:621) ~[?:?]
        at java.base/sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:594) ~[?:?]
        at org.opensearch.security.ssl.config.KeyStoreUtils.validateKeyStoreCertificates(KeyStoreUtils.java:147) ~[?:?]
        at org.opensearch.security.ssl.config.TrustStoreConfiguration.createTrustManagerFactory(TrustStoreConfiguration.java:61) ~[?:?]
        at org.opensearch.security.ssl.SslConfiguration.lambda$buildServerSslContext$0(SslConfiguration.java:84) ~[?:?]
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) ~[?:?]
        at org.opensearch.security.ssl.SslConfiguration.buildServerSslContext(SslConfiguration.java:73) ~[?:?]
        at org.opensearch.security.ssl.SslContextHandler.<init>(SslContextHandler.java:49) ~[?:?]
        at org.opensearch.security.ssl.SslContextHandler.<init>(SslContextHandler.java:45) ~[?:?]
        at org.opensearch.security.ssl.SslSettingsManager.lambda$buildSslContexts$0(SslSettingsManager.java:104) ~[?:?]
        at java.base/java.util.Optional.ifPresentOrElse(Optional.java:196) ~[?:?]
        at org.opensearch.security.ssl.SslSettingsManager.buildSslContexts(SslSettingsManager.java:103) ~[?:?]
        at org.opensearch.security.ssl.SslSettingsManager.<init>(SslSettingsManager.java:88) ~[?:?]
        at org.opensearch.security.ssl.OpenSearchSecuritySSLPlugin.<init>(OpenSearchSecuritySSLPlugin.java:249) ~[?:?]
        at org.opensearch.security.OpenSearchSecurityPlugin.<init>(OpenSearchSecurityPlugin.java:326) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[?:?]
        at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:809) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:757) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:551) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:197) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.node.Node.<init>(Node.java:524) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.node.Node.<init>(Node.java:451) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:242) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:242) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:404) ~[opensearch-2.19.0.jar:2.19.0]
        at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:181) ~[opensearch-2.19.0.jar:2.19.0]
        ... 6 more
java.lang.IllegalStateException: failed to load plugin class [org.opensearch.security.OpenSearchSecurityPlugin]
Likely root cause: java.security.cert.CertificateExpiredException: NotAfter: Mon Jul 28 14:14:05 UTC 2025
        at java.base/sun.security.x509.CertificateValidity.valid(CertificateValidity.java:277)
        at java.base/sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:621)
        at java.base/sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:594)
        at org.opensearch.security.ssl.config.KeyStoreUtils.validateKeyStoreCertificates(KeyStoreUtils.java:147)
        at org.opensearch.security.ssl.config.TrustStoreConfiguration.createTrustManagerFactory(TrustStoreConfiguration.java:61)
        at org.opensearch.security.ssl.SslConfiguration.lambda$buildServerSslContext$0(SslConfiguration.java:84)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
        at org.opensearch.security.ssl.SslConfiguration.buildServerSslContext(SslConfiguration.java:73)
        at org.opensearch.security.ssl.SslContextHandler.<init>(SslContextHandler.java:49)
        at org.opensearch.security.ssl.SslContextHandler.<init>(SslContextHandler.java:45)
        at org.opensearch.security.ssl.SslSettingsManager.lambda$buildSslContexts$0(SslSettingsManager.java:104)
        at java.base/java.util.Optional.ifPresentOrElse(Optional.java:196)
        at org.opensearch.security.ssl.SslSettingsManager.buildSslContexts(SslSettingsManager.java:103)
        at org.opensearch.security.ssl.SslSettingsManager.<init>(SslSettingsManager.java:88)
        at org.opensearch.security.ssl.OpenSearchSecuritySSLPlugin.<init>(OpenSearchSecuritySSLPlugin.java:249)
        at org.opensearch.security.OpenSearchSecurityPlugin.<init>(OpenSearchSecurityPlugin.java:326)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
        at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:809)
        at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:757)
        at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:551)
        at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:197)
        at org.opensearch.node.Node.<init>(Node.java:524)
        at org.opensearch.node.Node.<init>(Node.java:451)
        at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:242)
        at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:242)
        at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:404)
        <<<truncated>>>

Metadata

Metadata

Assignees

Type

Projects

Status

Development: In Progress

Status

Selected for Development

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions