I think it is clear to everyone that JAVA needs a way to identify the default truststore, when dealing with SSL, so this information has be passed to JAVA in some way, so I think the "updated" question in hand is how to do it in a do-it-one-time-and-then-forget-everytime way.
The best way I could found was by setting JAVA_TOOL_OPTIONS
environment variable at your OS level, if this environment variable is set then JAVA will be launched by default with the arguments you have provided in this environment variable.
So, you need not to set -Djavax.net.ssl.trustStore=/Library/Java/Home/lib/security/cacerts
each time JVM is launched, instead set JAVA_TOOL_OPTIONS
environment variable "once" at your OS level with value as -Djavax.net.ssl.trustStore=/Library/Java/Home/lib/security/cacerts
and then you are done.
Below is the excerpt from #1 of "Further readings":
When this environment variable is set, the JNI_CreateJavaVM function
(in the JNI Invocation API) prepends the value of the environment
variable to the options supplied in its JavaVMInitArgs argument.
Only caveat to watch out is mentioned below, excerpt from #1 of "Further readings":
In some cases this option is disabled for security reasons, for
example, on Solaris OS the option is disabled when the effective user
or group ID differs from the real ID.
Below is one more caveat (excerpt from #1 of "Further readings") to watch out but I think since context is not about VM selection argument so it is not relevant, but just to mention.
Since this environment variable is examined at the time that
JNI_CreateJavaVM is called, it cannot be used to augment the command
line with options that would normally be handled by the launcher, for
example, VM selection using the -client or the -server option.
Further readings: