Thread: Beginner's Question: No pg_hba.conf entry for host...SSL Off
Hi All-
I am hoping for some help on this one... we are in the process of implementing our program with SSL enabled on the Postgres side of things. I can start and connect to the database from the command line ok using my current configuration:
C:\msys\1.0\local\pgsql\bin>psql -d apt -U postgres
Welcome to psql 8.0.8, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Warning: Console code page (437) differs from Windows code page (1252)
8-bit characters may not work correctly. See psql reference
page "Notes for Windows users" for details.
apt=#
However, when I try to run our application to and connect to the database, I am receiving the following error: Connection rejected: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres", database "apt", SSL off.
Here is my pg_hba.conf file:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
#host all all 127.0.0.1/32 trust
# IPv6 local connections:
hostssl all all 127.0.0.1/32 trust
I know I need to add some code to enable the SSL connection but am not exactly sure how to go about this and what I've tried thus far hasn't worked... Below is an excerpt of our connection code:
public class DatabaseConnection {
private static String DB_IP;
private static final String DB_PORT = "5432";
private static String DB_CATALOG = "apt";
private static final String DB_USER = "postgres";
private static final String DB_PASSWORD = "XXXX";
public static void initIPAddress(String address){
DB_IP = address;
}
public static void initCatalog(String catalog){
DB_CATALOG = catalog;
}
public static Connection initialize() throws SQLException
{
final Connection connection;
Properties prop = new Properties();
String url;
try{
Class.forName("org.postgresql.Driver");
//url = "jdbc:postgresql://64.34.162.40:5432/apt";
url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" +
DB_CATALOG;
//prop.setProperty("user","postgres");
//prop.setProperty("password", "XXXX");
prop.setProperty("user", DB_USER);
prop.setProperty("password", DB_PASSWORD);
connection = DriverManager.getConnection(url, prop);
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
if(connection == null){
throw new Exception();
}
Thread maintainConn = new Thread(new Runnable(){
public void run(){
while(connection != null){
try{
maintainConnection(connection);
//10 minutes
Thread.sleep(600000);
}
catch(InterruptedException ie){}
}
}
});
maintainConn.setDaemon(true);
maintainConn.start();
}
catch(ClassNotFoundException cnf){
throw new SQLException(cnf.getMessage());
}
catch(Exception e){
throw new SQLException(e.getMessage());
}
return connection;
}
I am hoping for some help on this one... we are in the process of implementing our program with SSL enabled on the Postgres side of things. I can start and connect to the database from the command line ok using my current configuration:
C:\msys\1.0\local\pgsql\bin>psql -d apt -U postgres
Welcome to psql 8.0.8, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Warning: Console code page (437) differs from Windows code page (1252)
8-bit characters may not work correctly. See psql reference
page "Notes for Windows users" for details.
apt=#
However, when I try to run our application to and connect to the database, I am receiving the following error: Connection rejected: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres", database "apt", SSL off.
Here is my pg_hba.conf file:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
#host all all 127.0.0.1/32 trust
# IPv6 local connections:
hostssl all all 127.0.0.1/32 trust
I know I need to add some code to enable the SSL connection but am not exactly sure how to go about this and what I've tried thus far hasn't worked... Below is an excerpt of our connection code:
public class DatabaseConnection {
private static String DB_IP;
private static final String DB_PORT = "5432";
private static String DB_CATALOG = "apt";
private static final String DB_USER = "postgres";
private static final String DB_PASSWORD = "XXXX";
public static void initIPAddress(String address){
DB_IP = address;
}
public static void initCatalog(String catalog){
DB_CATALOG = catalog;
}
public static Connection initialize() throws SQLException
{
final Connection connection;
Properties prop = new Properties();
String url;
try{
Class.forName("org.postgresql.Driver");
//url = "jdbc:postgresql://64.34.162.40:5432/apt";
url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" +
DB_CATALOG;
//prop.setProperty("user","postgres");
//prop.setProperty("password", "XXXX");
prop.setProperty("user", DB_USER);
prop.setProperty("password", DB_PASSWORD);
connection = DriverManager.getConnection(url, prop);
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
if(connection == null){
throw new Exception();
}
Thread maintainConn = new Thread(new Runnable(){
public void run(){
while(connection != null){
try{
maintainConnection(connection);
//10 minutes
Thread.sleep(600000);
}
catch(InterruptedException ie){}
}
}
});
maintainConn.setDaemon(true);
maintainConn.start();
}
catch(ClassNotFoundException cnf){
throw new SQLException(cnf.getMessage());
}
catch(Exception e){
throw new SQLException(e.getMessage());
}
return connection;
}
I've tried the following with the 'prop.setProperty("ssl","true) parameter - added:
private static final String DB_SSL_STATUS = "true";
&
prop.setProperty("ssl", DB_SSL_STATUS);
...
public class DatabaseConnection {
private static String DB_IP;
private static final String DB_PORT = "5432";
private static String DB_CATALOG = "apt";
private static final String DB_USER = "postgres";
private static final String DB_PASSWORD = "XXXX";
private static final String DB_SSL_STATUS = "true";
public static void initIPAddress(String address){
DB_IP = address;
}
public static void initCatalog(String catalog){
DB_CATALOG = catalog;
public static Connection initialize() throws SQLException
{
final Connection connection;
Properties prop = new Properties();
String url;
try{
Class.forName("org.postgresql.Driver");
//url = "jdbc:postgresql://64.34.162.40:5432/apt";
url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" +
DB_CATALOG;
//prop.setProperty("user","postgres");
//prop.setProperty("password", "XXXX");
//prop.setProperty("ssl", "true");
prop.setProperty("user", DB_USER);
prop.setProperty("password", DB_PASSWORD);
prop.setProperty("ssl", DB_SSL_STATUS);
connection = DriverManager.getConnection(url, prop);
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
if(connection == null){
throw new Exception();
}
Thread maintainConn = new Thread(new Runnable(){
public void run(){
while(connection != null){
try{
maintainConnection(connection);
//10 minutes
Thread.sleep(600000);
}
catch(InterruptedException ie){}
}
}
});
maintainConn.setDaemon(true);
maintainConn.start();
}
catch(ClassNotFoundException cnf){
throw new SQLException(cnf.getMessage());
}
catch(Exception e){
throw new SQLException(e.getMessage());
}
return connection;
}
However, when I do that, it's throwing an exception from: connection = DriverManager.getConnection(url, prop);
and I'm getting an error message that says: "The connection attempt failed."
Any ideas from Java experts would be greatly appreciated! This is something I need to get resolved rather quickly...
Thanks much!!
-Jeanna
private static final String DB_SSL_STATUS = "true";
&
prop.setProperty("ssl", DB_SSL_STATUS);
...
public class DatabaseConnection {
private static String DB_IP;
private static final String DB_PORT = "5432";
private static String DB_CATALOG = "apt";
private static final String DB_USER = "postgres";
private static final String DB_PASSWORD = "XXXX";
private static final String DB_SSL_STATUS = "true";
public static void initIPAddress(String address){
DB_IP = address;
}
public static void initCatalog(String catalog){
DB_CATALOG = catalog;
public static Connection initialize() throws SQLException
{
final Connection connection;
Properties prop = new Properties();
String url;
try{
Class.forName("org.postgresql.Driver");
//url = "jdbc:postgresql://64.34.162.40:5432/apt";
url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" +
DB_CATALOG;
//prop.setProperty("user","postgres");
//prop.setProperty("password", "XXXX");
//prop.setProperty("ssl", "true");
prop.setProperty("user", DB_USER);
prop.setProperty("password", DB_PASSWORD);
prop.setProperty("ssl", DB_SSL_STATUS);
connection = DriverManager.getConnection(url, prop);
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
if(connection == null){
throw new Exception();
}
Thread maintainConn = new Thread(new Runnable(){
public void run(){
while(connection != null){
try{
maintainConnection(connection);
//10 minutes
Thread.sleep(600000);
}
catch(InterruptedException ie){}
}
}
});
maintainConn.setDaemon(true);
maintainConn.start();
}
catch(ClassNotFoundException cnf){
throw new SQLException(cnf.getMessage());
}
catch(Exception e){
throw new SQLException(e.getMessage());
}
return connection;
}
However, when I do that, it's throwing an exception from: connection = DriverManager.getConnection(url, prop);
and I'm getting an error message that says: "The connection attempt failed."
Any ideas from Java experts would be greatly appreciated! This is something I need to get resolved rather quickly...
Thanks much!!
-Jeanna
Hello- Sorry to re-post this, but I'm sort of stuck on this one and can't move forward until I get it resolved.... I've been googling some more and looking on some Java sites and trying out some different things with no luck. If anyone could offer me some assistance on this one, I would be greatly appreciative. We're using Postgres 8.0.8 and Java JDK 1.5.0_06 on Windows... If you need to know anything else, please let me know. Thanks in advance, -Jeanna ----- Original Message ----- From: Jeanna Geier To: pgsql-jdbc@postgresql.org Sent: Tuesday, September 26, 2006 10:43 AM Subject: [JDBC] Beginner's Question: No pg_hba.conf entry for host...SSL Off Hi All- I am hoping for some help on this one... we are in the process of implementing our program with SSL enabled on the Postgres side of things. I can start and connect to the database from the command line ok using my current configuration: C:\msys\1.0\local\pgsql\bin>psql -d apt -U postgres Welcome to psql 8.0.8, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Warning: Console code page (437) differs from Windows code page (1252) 8-bit characters may not work correctly. See psql reference page "Notes for Windows users" for details. apt=# However, when I try to run our application to and connect to the database, I am receiving the following error: Connection rejected: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres", database "apt", SSL off. Here is my pg_hba.conf file: # TYPE DATABASE USER CIDR-ADDRESS METHOD # IPv4 local connections: #host all all 127.0.0.1/32 trust # IPv6 local connections: hostssl all all 127.0.0.1/32 trust I know I need to add some code to enable the SSL connection but am not exactly sure how to go about this and what I've tried thus far hasn't worked... Below is an excerpt of our connection code: public class DatabaseConnection { private static String DB_IP; private static final String DB_PORT = "5432"; private static String DB_CATALOG = "apt"; private static final String DB_USER = "postgres"; private static final String DB_PASSWORD = "XXXX"; public static void initIPAddress(String address){ DB_IP = address; } public static void initCatalog(String catalog){ DB_CATALOG = catalog; } public static Connection initialize() throws SQLException { final Connection connection; Properties prop = new Properties(); String url; try{ Class.forName("org.postgresql.Driver"); //url = "jdbc:postgresql://64.34.162.40:5432/apt"; url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" + DB_CATALOG; //prop.setProperty("user","postgres"); //prop.setProperty("password", "XXXX"); prop.setProperty("user", DB_USER); prop.setProperty("password", DB_PASSWORD); connection = DriverManager.getConnection(url, prop); connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); if(connection == null){ throw new Exception(); } Thread maintainConn = new Thread(new Runnable(){ public void run(){ while(connection != null){ try{ maintainConnection(connection); //10 minutes Thread.sleep(600000); } catch(InterruptedException ie){} } } }); maintainConn.setDaemon(true); maintainConn.start(); } catch(ClassNotFoundException cnf){ throw new SQLException(cnf.getMessage()); } catch(Exception e){ throw new SQLException(e.getMessage()); } return connection; } I've tried the following with the 'prop.setProperty("ssl","true) parameter - added: private static final String DB_SSL_STATUS = "true"; & prop.setProperty("ssl", DB_SSL_STATUS); ... public class DatabaseConnection { private static String DB_IP; private static final String DB_PORT = "5432"; private static String DB_CATALOG = "apt"; private static final String DB_USER = "postgres"; private static final String DB_PASSWORD = "XXXX"; private static final String DB_SSL_STATUS = "true"; public static void initIPAddress(String address){ DB_IP = address; } public static void initCatalog(String catalog){ DB_CATALOG = catalog; public static Connection initialize() throws SQLException { final Connection connection; Properties prop = new Properties(); String url; try{ Class.forName("org.postgresql.Driver"); //url = "jdbc:postgresql://64.34.162.40:5432/apt"; url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" + DB_CATALOG; //prop.setProperty("user","postgres"); //prop.setProperty("password", "XXXX"); //prop.setProperty("ssl", "true"); prop.setProperty("user", DB_USER); prop.setProperty("password", DB_PASSWORD); prop.setProperty("ssl", DB_SSL_STATUS); connection = DriverManager.getConnection(url, prop); connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); if(connection == null){ throw new Exception(); } Thread maintainConn = new Thread(new Runnable(){ public void run(){ while(connection != null){ try{ maintainConnection(connection); //10 minutes Thread.sleep(600000); } catch(InterruptedException ie){} } } }); maintainConn.setDaemon(true); maintainConn.start(); } catch(ClassNotFoundException cnf){ throw new SQLException(cnf.getMessage()); } catch(Exception e){ throw new SQLException(e.getMessage()); } return connection; } However, when I do that, it's throwing an exception from: connection = DriverManager.getConnection(url, prop); and I'm getting an error message that says: "The connection attempt failed." Any ideas from Java experts would be greatly appreciated! This is something I need to get resolved rather quickly... Thanks much!! -Jeanna
Jeanna, Uncomment the host line with 127.0.0.1 and restart the server, then the code below should work. Dave On 26-Sep-06, at 2:57 PM, Jeanna Geier wrote: > Hello- Sorry to re-post this, but I'm sort of stuck on this one > and can't move forward until I get it resolved.... I've been > googling some more and looking on some Java sites and trying out > some different things with no luck. If anyone could offer me some > assistance on this one, I would be greatly appreciative. > > We're using Postgres 8.0.8 and Java JDK 1.5.0_06 on Windows... > > If you need to know anything else, please let me know. > > Thanks in advance, > -Jeanna > > ----- Original Message ----- From: Jeanna Geier > To: pgsql-jdbc@postgresql.org > Sent: Tuesday, September 26, 2006 10:43 AM > Subject: [JDBC] Beginner's Question: No pg_hba.conf entry for > host...SSL Off > > > Hi All- > > I am hoping for some help on this one... we are in the process of > implementing our program with SSL enabled on the Postgres side of > things. I can start and connect to the database from the command > line ok using my current configuration: > > C:\msys\1.0\local\pgsql\bin>psql -d apt -U postgres > Welcome to psql 8.0.8, the PostgreSQL interactive terminal. > > Type: \copyright for distribution terms > \h for help with SQL commands > \? for help with psql commands > \g or terminate with semicolon to execute query > \q to quit > > SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) > > Warning: Console code page (437) differs from Windows code page > (1252) > 8-bit characters may not work correctly. See psql reference > page "Notes for Windows users" for details. > > apt=# > > However, when I try to run our application to and connect to the > database, I am receiving the following error: Connection rejected: > FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres", > database "apt", SSL off. > > Here is my pg_hba.conf file: > > # TYPE DATABASE USER CIDR-ADDRESS METHOD > # IPv4 local connections: > #host all all 127.0.0.1/32 trust > # IPv6 local connections: > hostssl all all 127.0.0.1/32 trust > > I know I need to add some code to enable the SSL connection but am > not exactly sure how to go about this and what I've tried thus far > hasn't worked... Below is an excerpt of our connection code: > > public class DatabaseConnection { > private static String DB_IP; > > private static final String DB_PORT = "5432"; > private static String DB_CATALOG = "apt"; > private static final String DB_USER = "postgres"; > private static final String DB_PASSWORD = "XXXX"; > > public static void initIPAddress(String address){ > DB_IP = address; > } > > public static void initCatalog(String catalog){ > DB_CATALOG = catalog; > } > > public static Connection initialize() throws SQLException > { > final Connection connection; > Properties prop = new Properties(); > String url; > > try{ > Class.forName("org.postgresql.Driver"); > > //url = "jdbc:postgresql://64.34.162.40:5432/apt"; > url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" + > DB_CATALOG; > > //prop.setProperty("user","postgres"); > //prop.setProperty("password", "XXXX"); > prop.setProperty("user", DB_USER); > prop.setProperty("password", DB_PASSWORD); > > connection = DriverManager.getConnection(url, prop); > connection.setTransactionIsolation > (Connection.TRANSACTION_READ_COMMITTED); > > if(connection == null){ > throw new Exception(); > } > > Thread maintainConn = new Thread(new Runnable(){ > public void run(){ > while(connection != null){ > try{ > maintainConnection(connection); > //10 minutes > Thread.sleep(600000); > } > catch(InterruptedException ie){} > } > } > }); > maintainConn.setDaemon(true); > maintainConn.start(); > } > catch(ClassNotFoundException cnf){ > throw new SQLException(cnf.getMessage()); > } > catch(Exception e){ > throw new SQLException(e.getMessage()); > } > > return connection; > } > > > I've tried the following with the 'prop.setProperty("ssl","true) > parameter - added: > > private static final String DB_SSL_STATUS = "true"; > & > prop.setProperty("ssl", DB_SSL_STATUS); > > ... > public class DatabaseConnection { > private static String DB_IP; > > private static final String DB_PORT = "5432"; > private static String DB_CATALOG = "apt"; > private static final String DB_USER = "postgres"; > private static final String DB_PASSWORD = "XXXX"; > private static final String DB_SSL_STATUS = "true"; > > public static void initIPAddress(String address){ > DB_IP = address; > } > > public static void initCatalog(String catalog){ > DB_CATALOG = catalog; > public static Connection initialize() throws SQLException > { > final Connection connection; > Properties prop = new Properties(); > String url; > > try{ > Class.forName("org.postgresql.Driver"); > > //url = "jdbc:postgresql://64.34.162.40:5432/apt"; > url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" + > DB_CATALOG; > > //prop.setProperty("user","postgres"); > //prop.setProperty("password", "XXXX"); > //prop.setProperty("ssl", "true"); > prop.setProperty("user", DB_USER); > prop.setProperty("password", DB_PASSWORD); > prop.setProperty("ssl", DB_SSL_STATUS); > > connection = DriverManager.getConnection(url, prop); > connection.setTransactionIsolation > (Connection.TRANSACTION_READ_COMMITTED); > > if(connection == null){ > throw new Exception(); > } > > Thread maintainConn = new Thread(new Runnable(){ > public void run(){ > while(connection != null){ > try{ > maintainConnection(connection); > //10 minutes > Thread.sleep(600000); > } > catch(InterruptedException ie){} > } > } > }); > maintainConn.setDaemon(true); > maintainConn.start(); > } > catch(ClassNotFoundException cnf){ > throw new SQLException(cnf.getMessage()); > } > catch(Exception e){ > throw new SQLException(e.getMessage()); > } > > return connection; > } > > > However, when I do that, it's throwing an exception from: > connection = DriverManager.getConnection(url, prop); > and I'm getting an error message that says: "The connection attempt > failed." > > Any ideas from Java experts would be greatly appreciated! This is > something I need to get resolved rather quickly... > > Thanks much!! > -Jeanna > > ---------------------------(end of > broadcast)--------------------------- > TIP 5: don't forget to increase your free space map settings >
On Tue, 26 Sep 2006, Jeanna Geier wrote: > Hello- Sorry to re-post this, but I'm sort of stuck on this one and can't > move forward until I get it resolved.... I've been googling some more and > looking on some Java sites and trying out some different things with no luck. > If anyone could offer me some assistance on this one, I would be greatly > appreciative. It's a little unclear how much if any of this problem was solved on -hackers and -admin. > I've tried the following with the 'prop.setProperty("ssl","true) parameter - > added: > You definitely need this to get a SSL connection. > However, when I do that, it's throwing an exception from: connection = > DriverManager.getConnection(url, prop); > and I'm getting an error message that says: "The connection attempt failed." > Have you read the documentation here: http://jdbc.postgresql.org/documentation/81/ssl-client.html Java validates the server certificate by default which is different than the behavior of libpq. Kris Jurka
Hi Dave- Thanks for the reply!! I should probably have prefaced this message with a disclaimer that I'm attempting to establish an SSL connection to the database. :o) I did as you said: uncommented the host line and restarted the server... and I am still getting an error "The connection attempt failed." However, if I comment out the connection parameter I added for the SSL connection: //prop.setProperty("ssl", DB_SSL_STATUS); and run the project, it runs OK; but that sort of defeats my purpose of establishing an SSL connection to the database. :o) So, if I can get this running with the SSL connection working, I'm going to be in business! When the program gets to this line: connection = DriverManager.getConnection(url, prop); -- the url is correct, and 'prop' has the values of 'ssl=true','user=postgres','password=XXXX' - all correct, but it throws an exception. Guess it doesn't like the new SSL parameter for some reason - Any ideas out there? Thanks much, -Jeanna ----- Original Message ----- From: "Dave Cramer" <pg@fastcrypt.com> To: "Jeanna Geier" <jgeier@apt-cafm.com> Cc: <pgsql-jdbc@postgresql.org> Sent: Tuesday, September 26, 2006 2:11 PM Subject: Re: [JDBC] Beginner's Question: No pg_hba.conf entry for host...SSL Off > Jeanna, > > Uncomment the host line with 127.0.0.1 and restart the server, then the > code below should work. > > Dave > On 26-Sep-06, at 2:57 PM, Jeanna Geier wrote: > >> Hello- Sorry to re-post this, but I'm sort of stuck on this one and >> can't move forward until I get it resolved.... I've been googling some >> more and looking on some Java sites and trying out some different things >> with no luck. If anyone could offer me some assistance on this one, I >> would be greatly appreciative. >> >> We're using Postgres 8.0.8 and Java JDK 1.5.0_06 on Windows... >> >> If you need to know anything else, please let me know. >> >> Thanks in advance, >> -Jeanna >> >> ----- Original Message ----- From: Jeanna Geier >> To: pgsql-jdbc@postgresql.org >> Sent: Tuesday, September 26, 2006 10:43 AM >> Subject: [JDBC] Beginner's Question: No pg_hba.conf entry for host...SSL >> Off >> >> >> Hi All- >> >> I am hoping for some help on this one... we are in the process of >> implementing our program with SSL enabled on the Postgres side of >> things. I can start and connect to the database from the command line ok >> using my current configuration: >> >> C:\msys\1.0\local\pgsql\bin>psql -d apt -U postgres >> Welcome to psql 8.0.8, the PostgreSQL interactive terminal. >> >> Type: \copyright for distribution terms >> \h for help with SQL commands >> \? for help with psql commands >> \g or terminate with semicolon to execute query >> \q to quit >> >> SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) >> >> Warning: Console code page (437) differs from Windows code page >> (1252) >> 8-bit characters may not work correctly. See psql reference >> page "Notes for Windows users" for details. >> >> apt=# >> >> However, when I try to run our application to and connect to the >> database, I am receiving the following error: Connection rejected: >> FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres", >> database "apt", SSL off. >> >> Here is my pg_hba.conf file: >> >> # TYPE DATABASE USER CIDR-ADDRESS METHOD >> # IPv4 local connections: >> #host all all 127.0.0.1/32 trust >> # IPv6 local connections: >> hostssl all all 127.0.0.1/32 trust >> >> I know I need to add some code to enable the SSL connection but am not >> exactly sure how to go about this and what I've tried thus far hasn't >> worked... Below is an excerpt of our connection code: >> >> public class DatabaseConnection { >> private static String DB_IP; >> >> private static final String DB_PORT = "5432"; >> private static String DB_CATALOG = "apt"; >> private static final String DB_USER = "postgres"; >> private static final String DB_PASSWORD = "XXXX"; >> >> public static void initIPAddress(String address){ >> DB_IP = address; >> } >> >> public static void initCatalog(String catalog){ >> DB_CATALOG = catalog; >> } >> >> public static Connection initialize() throws SQLException >> { >> final Connection connection; >> Properties prop = new Properties(); >> String url; >> >> try{ >> Class.forName("org.postgresql.Driver"); >> >> //url = "jdbc:postgresql://64.34.162.40:5432/apt"; >> url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" + >> DB_CATALOG; >> >> //prop.setProperty("user","postgres"); >> //prop.setProperty("password", "XXXX"); >> prop.setProperty("user", DB_USER); >> prop.setProperty("password", DB_PASSWORD); >> >> connection = DriverManager.getConnection(url, prop); >> connection.setTransactionIsolation >> (Connection.TRANSACTION_READ_COMMITTED); >> >> if(connection == null){ >> throw new Exception(); >> } >> >> Thread maintainConn = new Thread(new Runnable(){ >> public void run(){ >> while(connection != null){ >> try{ >> maintainConnection(connection); >> //10 minutes >> Thread.sleep(600000); >> } >> catch(InterruptedException ie){} >> } >> } >> }); >> maintainConn.setDaemon(true); >> maintainConn.start(); >> } >> catch(ClassNotFoundException cnf){ >> throw new SQLException(cnf.getMessage()); >> } >> catch(Exception e){ >> throw new SQLException(e.getMessage()); >> } >> >> return connection; >> } >> >> >> I've tried the following with the 'prop.setProperty("ssl","true) >> parameter - added: >> >> private static final String DB_SSL_STATUS = "true"; >> & >> prop.setProperty("ssl", DB_SSL_STATUS); >> >> ... >> public class DatabaseConnection { >> private static String DB_IP; >> >> private static final String DB_PORT = "5432"; >> private static String DB_CATALOG = "apt"; >> private static final String DB_USER = "postgres"; >> private static final String DB_PASSWORD = "XXXX"; >> private static final String DB_SSL_STATUS = "true"; >> >> public static void initIPAddress(String address){ >> DB_IP = address; >> } >> >> public static void initCatalog(String catalog){ >> DB_CATALOG = catalog; >> public static Connection initialize() throws SQLException >> { >> final Connection connection; >> Properties prop = new Properties(); >> String url; >> >> try{ >> Class.forName("org.postgresql.Driver"); >> >> //url = "jdbc:postgresql://64.34.162.40:5432/apt"; >> url = "jdbc:postgresql://" + DB_IP + ":" + DB_PORT + "/" + >> DB_CATALOG; >> >> //prop.setProperty("user","postgres"); >> //prop.setProperty("password", "XXXX"); >> //prop.setProperty("ssl", "true"); >> prop.setProperty("user", DB_USER); >> prop.setProperty("password", DB_PASSWORD); >> prop.setProperty("ssl", DB_SSL_STATUS); >> >> connection = DriverManager.getConnection(url, prop); >> connection.setTransactionIsolation >> (Connection.TRANSACTION_READ_COMMITTED); >> >> if(connection == null){ >> throw new Exception(); >> } >> >> Thread maintainConn = new Thread(new Runnable(){ >> public void run(){ >> while(connection != null){ >> try{ >> maintainConnection(connection); >> //10 minutes >> Thread.sleep(600000); >> } >> catch(InterruptedException ie){} >> } >> } >> }); >> maintainConn.setDaemon(true); >> maintainConn.start(); >> } >> catch(ClassNotFoundException cnf){ >> throw new SQLException(cnf.getMessage()); >> } >> catch(Exception e){ >> throw new SQLException(e.getMessage()); >> } >> >> return connection; >> } >> >> >> However, when I do that, it's throwing an exception from: connection = >> DriverManager.getConnection(url, prop); >> and I'm getting an error message that says: "The connection attempt >> failed." >> >> Any ideas from Java experts would be greatly appreciated! This is >> something I need to get resolved rather quickly... >> >> Thanks much!! >> -Jeanna >> >> ---------------------------(end of broadcast)--------------------------- >> TIP 5: don't forget to increase your free space map settings >> > >
Hi Kris- Thanks for the reply! A one-liner in your attached link fixed my problem!! Thank you very much!! :o) I had to import my Postgres server.crt certificate into Java's system truststore. Again, thanks for your help, I'm up and running again! -Jeanna ----- Original Message ----- From: "Kris Jurka" <books@ejurka.com> To: "Jeanna Geier" <jgeier@apt-cafm.com> Cc: <pgsql-jdbc@postgresql.org> Sent: Tuesday, September 26, 2006 2:23 PM Subject: Re: [JDBC] Beginner's Question: No pg_hba.conf entry for host...SSL Off > > > On Tue, 26 Sep 2006, Jeanna Geier wrote: > >> Hello- Sorry to re-post this, but I'm sort of stuck on this one and >> can't move forward until I get it resolved.... I've been googling some >> more and looking on some Java sites and trying out some different things >> with no luck. If anyone could offer me some assistance on this one, I >> would be greatly appreciative. > > It's a little unclear how much if any of this problem was solved > on -hackers and -admin. > >> I've tried the following with the 'prop.setProperty("ssl","true) >> parameter - added: >> > > You definitely need this to get a SSL connection. > >> However, when I do that, it's throwing an exception from: connection = >> DriverManager.getConnection(url, prop); >> and I'm getting an error message that says: "The connection attempt >> failed." >> > > Have you read the documentation here: > > http://jdbc.postgresql.org/documentation/81/ssl-client.html > > Java validates the server certificate by default which is different than > the behavior of libpq. > > Kris Jurka > >