add sslcontext param to support different ssl context

This commit is contained in:
justbk
2022-09-05 15:28:20 +08:00
committed by justbk
parent 66b0da5a72
commit 6a0f05bd4a
3 changed files with 12 additions and 3 deletions

View File

@ -199,6 +199,11 @@ public enum PGProperty {
SSL_MODE("sslmode", null, "Parameter governing the use of SSL", false,
"disable", "allow", "prefer", "require", "verify-ca", "verify-full"),
/**
* Context of SSL(SSLContext.getInstance("@code")): empty for TLS,valid values{SSL/SSLv2/SSLv3/TLS/TLSv1/TLSv1.1/TLSv1.2}
*/
SSL_CONTEXT("sslcontext", null, "Control use of SSL Context(SSL, TLS, TLSv1.2, etc)"),
/**
* Classname of the SSL Factory to use (instance of {@code javax.net.ssl.SSLSocketFactory}).
*/

View File

@ -43,7 +43,7 @@ public abstract class DbKeyStoreSocketFactory extends org.postgresql.ssl.Wrapped
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustfact.init(keys);
SSLContext ctx = SSLContext.getInstance("SSL");
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(keyfact.getKeyManagers(), trustfact.getTrustManagers(), null);
_factory = ctx.getSocketFactory();
} catch (java.security.GeneralSecurityException gse) {

View File

@ -52,7 +52,11 @@ public class LibPQFactory extends WrappedFactory {
*/
public LibPQFactory(Properties info) throws PSQLException {
try {
SSLContext ctx = SSLContext.getInstance("TLS"); // or "SSL" ?
String contextConfig = PGProperty.SSL_CONTEXT.get(info);
if (contextConfig == null || "".equals(contextConfig.trim())) {
contextConfig = "TLS";
}
SSLContext ctx = SSLContext.getInstance(contextConfig); // or "SSL" ?
// Determining the default file location
String pathsep = System.getProperty("file.separator");