Skip to content

Default to SSL with hardcoded AWS Redshift CA#20

Merged
graingert merged 1 commit intomasterfrom
enable-tls-by-default
Aug 22, 2015
Merged

Default to SSL with hardcoded AWS Redshift CA#20
graingert merged 1 commit intomasterfrom
enable-tls-by-default

Conversation

@graingert
Copy link
Member

You can still override this by setting {'sslmode': 'disable'}

In fact I'd recommend using {'sslmode': 'verify-full', 'sslrootcert': '/path/to/redshift-ssl-ca-cert.pem'}

@graingert graingert force-pushed the enable-tls-by-default branch from 992b245 to 9d7340e Compare August 22, 2015 19:01
@graingert graingert force-pushed the enable-tls-by-default branch from 9d7340e to 1e09e37 Compare August 22, 2015 19:08
@graingert
Copy link
Member Author

@jklukas @thisfred @bouk: Thoughts?

@thisfred
Copy link

lgtm, and I think it makes sense to use SSL by default.

graingert added a commit that referenced this pull request Aug 22, 2015
Default to SSL with hardcoded AWS Redshift CA
@graingert graingert merged commit a7afb1e into master Aug 22, 2015
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-ssl-support.html:

Amazon Redshift does not support verify-full. For more information about sslmode options, see SSL Support in the PostgreSQL documentation.

So, if this is working, it's probably not doing what we think it's doing.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been running with verify-full in production for several months now

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think using "sslrootcert" is making this work for us

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll mess about with wireshark on this at home.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the redshift cluster is sending a valid ServerCertificate (when validated with redshift-ssl-ca-cert.pem) with the correct common name: "redshift-sqlalchemy-test.cforsfjmjsja.us-west-2.redshift.amazonaws.com" see https://gist.github.com/graingert/3a46c493520db7caa460#file-redshift-tls-server-hello-txt-L188

So there is no reason that verify-ssl should not be working as designed.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll be sticking with "verify-full" unless someone reports issues with it, because the documentation on that page that's not wrong is dangerous.

Under the configuration here: https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-ssl-support.html clients will accept certificates minted by Amazon for any Internet server, and anyone with any valid certificate will be able to MITM connections to the redshift server.

If you're using "verify-ca" with your system ca-store your connection can be easily compromised with any free x509 certificate.

@graingert graingert deleted the enable-tls-by-default branch August 24, 2015 17:00
haleemur pushed a commit to haleemur/redshift_sqlalchemy that referenced this pull request Sep 2, 2015
…y-default

Default to SSL with hardcoded AWS Redshift CA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants