Skip to content

Commit 7d813df

Browse files
Added implementation for database connection with postgresql over SSL (#16947)
* Added implementation for database connection with postgresql over SSL * Deleted private key * Refactored postgresoverssl
1 parent 3ca1101 commit 7d813df

File tree

10 files changed

+147
-0
lines changed

10 files changed

+147
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEgTCCAmmgAwIBAgIUG2Bm4S/8YEFi+GX8rmKgpLEeomEwDQYJKoZIhvcNAQEL
3+
BQAwWTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
4+
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MB4X
5+
DTI0MDYyODA2NTMxMloXDTI1MTExMDA2NTMxMlowWDELMAkGA1UEBhMCQVUxEzAR
6+
BgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5
7+
IEx0ZDERMA8GA1UEAwwIcG9zdGdyZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
8+
ggEKAoIBAQCl8WdMB5WB+zj0LBfZfGZhvTT/xFRlOWbt2DRahVfh3KOtOiIclN+l
9+
wzV51RzFVuiI4hpUOZH9HHECzuIgo90TVvNkcqAoYIjk/I4lfBR5ItZRSBuVr1jl
10+
HeYxZhcGwsSS2OLbqQ25Q2SYYV9Cjeh/jiXingy/h7uUF9i9wEppc4txzGiLHQcc
11+
y5LefNkf8IoUm4+nRbY0/7FFHCIo2Hy20Solog9gcFj39H5rIfISWYWUWKiGH4U0
12+
ghiU0D37PrUBzf2KliRPjhiW+qiVwfrcIBF+pIqJloLhPphlcufTxJLkW6E8tiCr
13+
3KyzxKeNPz8y8s++p55vb4P1pF9/nb2nAgMBAAGjQjBAMB0GA1UdDgQWBBSAowXS
14+
rnfntRKyzeKLq40ryD8FxDAfBgNVHSMEGDAWgBQfFIC2Ro62u4A+THnyQmeq1c88
15+
WjANBgkqhkiG9w0BAQsFAAOCAgEAPL8RC5fLUYQafB/HCu0zj0LyabhK9fcxq+Ft
16+
YclLVHH2JPDUdE4JMeKy28o2PNvqkiyQxFBt/WxOryJ0o6avnROK5Tom4EQTI6lo
17+
5l8U4rZOw/wLO3nCARLcNUlrZQFQgEo0e3+UYj8XLmTM3f+L5oezCXBJ3yIX3w/H
18+
PPFfZ4a+ZLKw4ebmCId5p3NfDqpPKLnDD0eWu6/egWA2YlCrvS2nG47EVSqDmHEM
19+
EVBxvOTA3kM5/wBYo+xQsnyuQ2Eltnkfi3TZwWbKF44wXMRv5ZEsLRzQ3lT4U+zP
20+
SzNFzqVCnI+fQawKS9mB0AKeMLh9RBokAMUTTrsnbFSsEL33JehGuoAiPubgwbUK
21+
nrUVB9Vwn9yh2YR3FzWHGZlgB64q7ZZrdfPJ1O1C5KkOM0O1msvFsNjs20j4Tcwc
22+
0ws0QzruVB99uvRU0BMA7BBb/jOz77eeFZ9S15NB5UkBAsb9WK8uuwId1wSptE0K
23+
NA6qtb8E9/ohPTyjxgtusnMipwFbormKA/7h4QH5CE/+dm7DjncbwaDYCuXxlN6T
24+
9hNNU2JzWEZiRgdATkykxl25NYXolAHT6HbWsBaEnhLaGCF3SIR+UeXhkZK1PGo0
25+
W8GGevYQd41dFfrTANi+z4I3rjqGFmWq+P99S4efRXmLMfM24BKgBQywLPj5sUvv
26+
ojAyFPg=
27+
-----END CERTIFICATE-----
2.93 KB
Binary file not shown.
2.91 KB
Binary file not shown.
1.19 KB
Binary file not shown.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
-----BEGIN CERTIFICATE-----
2+
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
32+
-----END CERTIFICATE-----
1.76 KB
Binary file not shown.

persistence-modules/spring-jpa-3/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@
2626
<artifactId>h2</artifactId>
2727
<version>${h2.version}</version>
2828
</dependency>
29+
<dependency>
30+
<groupId>org.postgresql</groupId>
31+
<artifactId>postgresql</artifactId>
32+
<version>42.7.3</version>
33+
</dependency>
2934

3035
<!-- test scoped -->
3136
<dependency>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.baeldung.pgoverssl;
2+
3+
import java.nio.file.Paths;
4+
import java.sql.Connection;
5+
import java.sql.DriverManager;
6+
import java.sql.SQLException;
7+
import java.util.Map;
8+
import java.util.Properties;
9+
10+
public class PgJdbc {
11+
12+
public void checkConnectionSsl(String url, String username, String password, Map<String, String> extraProps) {
13+
// set up connection properties
14+
Properties props = new Properties();
15+
props.putAll(extraProps);
16+
props.put("username", username);
17+
props.put("password", password);
18+
props.put("sslmode", "verify-ca");
19+
props.put("ssl", "true");
20+
21+
try (Connection connection = DriverManager.getConnection(url, props)) {
22+
if (!connection.isClosed()) {
23+
connection.close();
24+
}
25+
// we had a successful connection
26+
System.out.println("Connection was successful");
27+
} catch (SQLException e) {
28+
System.out.println("Connection failed");
29+
}
30+
}
31+
32+
public static void main(String[] args) {
33+
PgJdbc pg = new PgJdbc();
34+
String url = "jdbc:postgresql://localhost:5432/testdb";
35+
String username = "postgres";
36+
String password = "password";
37+
// base path for files
38+
String BASE_PATH = Paths.get(PgJdbc.class.getResource("/pgoverssl/certs").getPath())
39+
.toAbsolutePath()
40+
.toString();
41+
42+
Map<String, String> connectionProperties = Map.of("sslcert", BASE_PATH.concat("/pg_client.crt"), "sslkey", BASE_PATH.concat("/pg_client.pk8"),
43+
"sslrootcert", BASE_PATH.concat("/root.crt"));
44+
45+
// connection with regular certificate and private key properties
46+
System.out.println("Connection without keystore and truststore");
47+
pg.checkConnectionSsl(url, username, password, connectionProperties);
48+
49+
//connection using keystore and truststore
50+
System.setProperty("javax.net.ssl.keyStore", BASE_PATH.concat("/pg_client.jks"));
51+
System.setProperty("javax.net.ssl.keyStorePassword", "password");
52+
System.setProperty("javax.net.ssl.trustStore", BASE_PATH.concat("/truststore.jks"));
53+
System.setProperty("javax.net.ssl.trustStorePassword", "password");
54+
55+
// connection using trust store
56+
System.out.println("\nConnection using keystore and truststore");
57+
pg.checkConnectionSsl(url, username, password, Map.of("sslfactory", "org.postgresql.ssl.DefaultJavaSSLFactory"));
58+
}
59+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.baeldung.pgoverssl;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication(scanBasePackages = "com.baeldung")
7+
public class PgSpringboot {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(PgSpringboot.class, args);
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
spring:
2+
application:
3+
name: postgresqlssltest
4+
datasource:
5+
url: jdbc:postgresql://localhost:5432/testdb?ssl=true&sslmode=verify-ca&sslrootcert=certs/root.crt&sslcert=certs/pg_client.crt&sslkey=certs/pg_client.pk8
6+
username: postgres
7+
password: "password"
8+
driver-class-name: org.postgresql.Driver
9+
jpa:
10+
hibernate:
11+
ddl-auto: update
12+
database-platform: org.hibernate.dialect.PostgreSQLDialect

0 commit comments

Comments
 (0)