使用公钥为Amazon Aurora DB创建加密连接

时间:2017-10-09 13:42:59

标签: java ssl public-key amazon-rds-aurora

我正在使用Maria JDBC驱动程序创建与Amazon Aurora DB的连接 我想创建一个安全的连接,所以我读了here

  

使用MySQL实用程序

连接到具有SSL的数据库集群      

从中下载Amazon RDS签名证书的公钥   https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem。   请注意,这将下载名为rds-combined-ca-bundle.pem。

的文件

第一个问题:如何确保安全 - 任何人都可以从pem下载此Amazon AWS文件?

我做了一些研究我应该如何使用公钥连接到Aurora数据库 我找到了这两个链接FirstSecond

所以我的代码很简单:

Class.forName("org.mariadb.jdbc.Driver");

Properties prop = new Properties();

prop.setProperty("javax.net.ssl.trustStore","C:\\temp\\rds-combined-ca-bundle.pem");
prop.setProperty("user",jdbcDetails.username);
prop.setProperty("password",jdbcDetails.getSensitiveData());

    java.sql.Connection conne = DriverManager.getConnection(jdbcDetails.connectionString, prop);
    try (Statement stmt1 = conne.createStatement()) {
        // Execute all but the rest
        ResultSet rs = stmt1.executeQuery("Select 98765 from dual limit 2");
        while(rs.next()) {

            rs.getLong(1);
        }
    }
    conne.close();

第二个问题:如何让public key file与加密相关?

以上信息与Oracle Java information相提并论:

  

如果客户端想要验证服务器,那么客户端的信任存储必须包含服务器的证书

第三个问题:根据我的理解,如果客户信任服务器,则不要求他使用此文件

第四个问题:我正在检查与Wireshark的连接创建 有和没有这个public key file i的情况都能够创建连接,并且Wireshark中的两个案例都出现了加密

看起来像这样的东西:

Encrypted Application Data:
eb:62:45:fb:10:50:f7:8c............:b9:0a:52:e7:97:1d:34

1 个答案:

答案 0 :(得分:1)

基于this answer我了解公钥使用方法:

首先, 亚马逊AWS Azure文档似乎有误导性 - 它仅与连接特定工具 MySQL实用程序

相关

First&的答案第二&第三个问题:

  

" Java绝对可以在没有客户端的情况下建立SSL连接   验证服务器的证书链。"

进行密钥交换以确保它所连接的服务器确实是它所期望的服务器(即非可疑服务器) 这意味着它仍然是相同的SSL连接,但是使用verifyServerCertificate = false它不会验证它是否是预期的服务器

回答第四个问题: Currect,代码在Java中 - 并且传递SSL参数使其加密。

因此,使用这些参数可以满足要求 ?trustServerCertificate=true&useSSL=true&requireSSL=true&verifyServerCertificate=false