Verwenden von aws-advanced-jdbc-wrapper zum Herstellen einer sicheren SSL- und IAM-basierten Verbindung zu Aurora PostgrJava

Java-Forum
Guest
 Verwenden von aws-advanced-jdbc-wrapper zum Herstellen einer sicheren SSL- und IAM-basierten Verbindung zu Aurora Postgr

Post by Guest »

Ich habe kürzlich entdeckt, dass aws-advanced-jdbc-wrapper eine großartige Bibliothek für die RDS-IAM-basierte Authentifizierung ist, da sie das Token für mich dynamisch aktualisiert. Daher folge ich dem Tutorial auf dieser Seite:

Code: Select all

package software.amazon;

import software.amazon.jdbc.PropertyDefinition;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class AwsIamAuthenticationPostgresqlExample {
public static final String POSTGRESQL_CONNECTION_STRING =
"jdbc:aws-wrapper:postgresql://db-identifier.XYZ.us-east-2.rds.amazonaws.com:5432/employees";
private static final String USERNAME = "john_smith";

public static void main(String[] args) throws SQLException {

final Properties properties = new Properties();

// Enable AWS IAM database authentication and configure driver property values
properties.setProperty(PropertyDefinition.PLUGINS.name, "iam");
properties.setProperty(PropertyDefinition.USER.name, USERNAME);

// Attempt a connection
try (Connection conn = DriverManager.getConnection(POSTGRESQL_CONNECTION_STRING, properties);
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("select aurora_db_instance_identifier()")) {

System.out.println(Util.getResult(result));
}
}
}
Das einzige Problem bei diesem Ansatz ist, dass ich eine Fehlermeldung erhalte:

Code: Select all

org.postgresql.util.PSQLExeption: FATAL: PAM authentication failed for user john_smith ...
Und das macht Sinn, ich stelle keine Zertifikate oder SSL-Informationen zur Verfügung.
Ich habe versucht, eine Verbindung über psql herzustellen< /code> CLI und es hat funktioniert:

Code: Select all

psql "host=$RDSHOST port=$RDSPORT sslmode=verify-ca sslrootcert=global-bundle.pem user=$RDSUSER dbname=$RDSDB"
Ich vermute also, dass ich einfach vergessen habe, diese Eigenschaften für meine Anwendung bereitzustellen, also habe ich es getan und es erneut versucht:

Code: Select all

    properties.setProperty("sslrootcert", "");
properties.setProperty("ssl", true);
properties.setProperty("sslmode", "verify-ca");
Kein Glück, derselbe Fehler.
Dann habe ich mein global-bundle.pem in meine CA-Zertifikate importiert mit:

Code: Select all

keytool -importcert -alias aws-certs -trustcacerts -file /path/to/global-bundle.pem -storepass changeit -cacerts  -noprompt
Dieses Mal hat sich mein Nachrichtenfehler geändert (IDK, wenn ich mich der endgültigen Lösung nähere oder entferne:

Code: Select all

org.postgresql.util.PSQLExeption: Could not open SSL root certificate file /home//.postgresql/root.crt
Haben Sie bitte eine Idee, wie das geht? Was übersehe ich?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post