Beginner's Question: No pg_hba.conf entry for host...SSL Off

From: "Jeanna Geier" <jgeier(at)apt-cafm(dot)com>
To: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Beginner's Question: No pg_hba.conf entry for host...SSL Off
Date: 2006-09-26 15:43:32
Message-ID: 012701c6e182$855cd710$6700a8c0@geier
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

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

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Guy Rouillier 2006-09-26 16:06:28 Re: Bind message
Previous Message Luis Vilar Flores 2006-09-26 15:35:16 Re: bytea memory improvement