gaocho commented on issue #3742:
URL: https://github.com/apache/polaris/issues/3742#issuecomment-3887536545

   @dimas-b @jbonofre 
   **Progress Update**
   Credential Vending Issue Status
   The original "AWS Access Key Id does not exist" error no longer appears. 
While I cannot definitively confirm the credential vending is completely fixed 
(it could resurface), the error has stopped occurring after implementing the 
following configuration:
   
   {
       "properties": {
         "default-base-location": "s3://iceberg/warehouse"
         // NO credentials in properties
       },
       "storageConfigInfo": {
         "storageType": "S3",
         "endpoint": "my_netapp_endpoint",
         "pathStyleAccess": true,
         "stsUnavailable": true,
         "allowedLocations": ["s3://iceberg/warehouse"]
       }
     }
   ```
   
   **Current Status:**
   - ✅ `CREATE NAMESPACE polaris.test` - **SUCCEEDS**
   - ❌ `CREATE TABLE polaris.test.table1 (...)` - **FAILS with SSL handshake 
error**
    
    **Current Issue: SSL Handshake Failure**
   **Error:**
   ```
   javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
   Caused by: java.io.EOFException: SSL peer shut down incorrectly
   
   What I've Verified:
   -Credentials are valid
   -All 7 NetApp S3 certificates imported to Java truststore
   -Polaris started with explicit trustStore configuration
   -SSL debug logging enabled:
   
   java -Djavax.net.debug=ssl,handshake -jar quarkus-run.jar 2>&1 | tee 
polaris-ssl-debug.log
   ```
   
   **Debug Output Observations:**
   
   From Polaris server logs during table creation attempt:
   - HTTP 500 error returned to Spark: `POST 
/api/catalog/v1/netapp_iceberg/namespaces/test/tables HTTP/1.1" 500`
   - Multiple retry attempts (5 attempts observed), all failing with same SSL 
error
   - **Critical finding:** No SSL handshake debug output appears for the S3 
connection, despite `-Djavax.net.debug=ssl,handshake` being set
   - This suggests the AWS SDK S3 client is not using the Java SSL debug 
infrastructure or trustStore configuration
   
   **Stack trace shows:**
   ```
   software.amazon.awssdk.core.exception.SdkClientException: Unable to execute 
HTTP request: Remote host terminated the handshake
     at 
software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute
     ...
   Caused by: javax.net.ssl.SSLHandshakeException: Remote host terminated the 
handshake
     at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord
     ...
   Caused by: java.io.EOFException: SSL peer shut down incorrectly
   
   
   Analysis
   The issue appears to be that Polaris's AWS SDK S3 client is not respecting 
the Java trustStore configuration provided via -Djavax.net.ssl.trustStore. The 
namespace creation succeeds (Polaris REST API calls work fine), but when 
Polaris attempts to write table metadata to NetApp S3, the AWS SDK's HTTP 
client fails the SSL handshake.
   Evidence:
   
   Namespace operations work (Polaris internal database operations)
   AWS CLI with same credentials and endpoint works
   Java trustStore contains all necessary certificates (verified)
   SSL debug output shows no certificate validation attempts for S3 connections
   Error originates from AWS SDK internal HTTP pipeline, not Java's native SS
   
   
   **Questions for guys:**
   -Does Polaris's AWS SDK S3 client honor the JVM's -Djavax.net.ssl.trustStore 
parameter?
   -Is there a Polaris-specific configuration for AWS SDK SSL/TLS settings when 
connecting to S3-compatible storage with custom certificates?
   -Should there be additional configuration in application.properties to 
configure the AWS SDK's trust manager?
   
    **Request**
   Documentation or guidance on configuring Polaris + AWS SDK for S3-compatible 
storage with custom SSL certificates. This is a valid enterprise use case where 
organizations use private S3-compatible storage with internal CAs.
   
   thank you for anticipated assistance!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to