Copy cert files from classpath to file-system (#989)
* Copy cert files from classpath to file-system If `ssl.truststore.location` and `ssl.keystore.location` are provided as classpath resources, convert them to absolute paths on the filesystem. This is because of a restriction in the Kafka client in which it does not allow certificates to be read from the classpath. See these issues for more details: https://issues.apache.org/jira/browse/KAFKA-7685 https://cwiki.apache.org/confluence/display/KAFKA/KIP-398%3A+Support+reading+trust+store+from+classpath This commit allows the Spring Cloud Stream application to provide the cert files as classpath: reosources, but the binder internally move them to a locations on the local filesystem and then use that absolute path as the value for cert locations. Adding properties for optional paths to move the files to. If no values are provided for these properties, then use the system's /tmp directory. Adding tests and docs. Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/985 * Addressing PR review comments * Addressing further PR review comments * Consolidate keystore/truststore filesystem locations into a single property * Addressing PR review
This commit is contained in:
@@ -149,6 +149,14 @@ Flag to set the binder health as `down`, when any partitions on the topic, regar
|
||||
+
|
||||
Default: `false`.
|
||||
|
||||
spring.cloud.stream.kafka.binder.certificateStoreDirectory::
|
||||
When the truststore or keystore certificate location is given as a classpath URL (`classpath:...`), the binder copies the resource from the classpath location inside the JAR file to a location on the filesystem.
|
||||
The file will be moved to the location specified as the value for this property which must be an existing directory on the filesystem that is writable by the process running the application.
|
||||
If this value is not set and the certificate file is a classpath resource, then it will be moved to System's temp directory as returned by `System.getProperty("java.io.tmpdir")`.
|
||||
This is also true, if this value is present, but the directory cannot be found on the filesystem or is not writable.
|
||||
+
|
||||
Default: none.
|
||||
|
||||
[[kafka-consumer-properties]]
|
||||
==== Kafka Consumer Properties
|
||||
|
||||
|
||||
Reference in New Issue
Block a user