从EMR集群通过SSL连接mysql java连接器到AWS Aurora:一种方法



如何通过SSL将EMR集群中的作业连接到Aurora ?有很多分散在论坛上的信息,带来了部分解决这个问题,所以我在这里总结一下。

有很多关于通过SSL从mysql java连接器连接到AWS Aurora的信息散落在论坛和stackoverflow上,所以如果我没有包括所有的参考资料,请道歉。

长话短说:使用ssl将运行在EMR集群中的程序连接到Aurora有两个主要问题:

1)只导入rds-combined-ca-bundle。Amazon提供给密钥存储库的PKIX . pem将无法工作,因为它将显示"PKIX路径构建失败"错误。

2) java属性javax.net.ssl.keyStore将无法从集群的从服务器中获得,因此应用程序将无法找到keyStore,它将产生"通信链接失败"

1)的原因似乎与文件rds-combined-ca-bundle。pem有几个证书,所以在一个论坛上,我现在没有参考,建议的解决方案是拆分这些证书。Aurora的证书是第8个:

-----BEGIN CERTIFICATE----- MIID/DCCAuSgAwIBAgIBQzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx . htmlEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMTU0MDRaFw0yMDAzMDUyMTU0MDRaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJEUyB1cy1lYXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIUIuwh8NusKHk1SqPXcP7OqxY3S/M2ZyQWD3w7Bfihpyyy fc1w0/suIpX3kbMhAV2 eswged2/2zsx4pvnjp/493 r4luhsqqyzru78tupt9bhjij51wxunzw2swkissafnabuyoi8edvgbqwd68h1epsc0n USYUzVN9ezR/bjXTumSUQaLIouJt3OHLX49s + 3CI5s + pIktyOZ59c4DCDLQcXErQ + tNbDC + + oct1ANd/q8p9URonYwGCGOBy7sbCYq9 evhh1iy2m + SNXddVOGw5EuruvHoCIQyOz5Lz4zSuZA9dRbrfztNOpezCNYu6NKMn + hzcvdiyxv77uNm8EaxAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQSQG3TmMe6Sa3KufaPBa72v4QFDzAfBgNVHSMEGDAWgBROAu6sPvYVyEztLPUFwY + chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEAL/mOZfB3187xTmjOHMqN2G2oSKHBKiQLM9uv8 + 97 qt + XR + TVsBT6b3yoPpMAGhHAPc7nxAF5gPpuzatx0OTLPcmYucFmfqT/1 qa5wlgcnmntczynmh97lkftnv7njtekjWEzAEQSyEWrkNpNlC4j6kMYyPzVXQeXUeZTgJ9FNnVZqmvfjip2N22tawMjrCn57 kn/zN65EwY2oO9XsaTwwWmBu3NrDdMbzJnbxoWcFWj4RBwanR1XjQOVNhDwmCOl/1 et13b8cpyj69pc8bovu6cftsx8wuvy0qvyokhny9bqa5bdnil3ivmuketlm1mtenRpyBj + Bk9rh/ICdiRKmA = =——结束证书——

如果你把这段提取到一个叫做bundle8的文件中。Pem,您生成的密钥如下所示:

keytool -import -alias mysqlServerCACert -file bundle8.pem -keystore truststore

对于2)的解决方案是将javax.net.ssl.keyStore设置为命令参数,对于spark-submit的情况,选项应该是'——driver-java-options':

spark-submit --deploy-mode cluster --driver-java-options='-Djavax.net.ssl.trustStore=truststore' --files s3://path/to/truststore ..other spark options

为"truststore",使用keytool生成的文件。——driver-java-选项将允许在从服务器的环境中使用信任库文件。

参考:

连接Amazon Aurora DB集群:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connect.html

使用SSL连接Mysql Java连接器https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-using-ssl.html

最新更新