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

时间:2016-09-22 00:56:17

标签: java amazon-web-services ssl amazon-emr amazon-rds-aurora

如何通过SSL将作业从EMR群集连接到Aurora?论坛上散布了大量信息,为这个问题带来了部分解决方案,所以我想在这里总结一下。

1 个答案:

答案 0 :(得分:0)

有很多关于通过分散在论坛和stackoverflow上的mysql java连接器连接到AWS Aurora Via SSL的信息,所以如果我不包含所有引用,请道歉。

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

1)只需将亚马逊提供的rds-combined-ca-bundle.pem导入密钥库即可,因为它会显示" PKIX路径构建失败"错误。

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

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

  

----- BEGIN CERTIFICATE ----- MIID / DCCAuSgAwIBAgIBQzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx   EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM   GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx   GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMTU0MDRaFw0y   MDAzMDUyMTU0MDRaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv   bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl   cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE   UyB1cy1lYXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDI   UIuwh8NusKHk1SqPXcP7OqxY3S / M2ZyQWD3w7Bfihpyyy / fc1w0 / suIpX3kbMhAV   2ESwged2 / 2zSx4pVnjp / 493r4luhSqQYzru78TuPt9bhJIJ51WXunZW2SWkisSaf   USYUzVN9ezR / bjXTumSUQaLIouJt3OHLX49s + 3NAbUyOI8EdvgBQWD68H1epsC0n   CI5s + pIktyOZ59c4DCDLQcXErQ + tNbDC ++ oct1ANd / q8p9URonYwGCGOBy7sbCYq   9eVHh1Iy2M + SNXddVOGw5EuruvHoCIQyOz5Lz4zSuZA9dRbrfztNOpezCNYu6NKM   的n + hzcvdiyxv77uNm8EaxAgMBAAGjZjBkMA4GA1UdDwEB / wQEAwIBBjASBgNVHRMB   Af8ECDAGAQH / AgEAMB0GA1UdDgQWBBQSQG3TmMe6Sa3KufaPBa72v4QFDzAfBgNV   HSMEGDAWgBROAu6sPvYVyEztLPUFwY + chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA   L / mOZfB3187xTmjOHMqN2G2oSKHBKiQLM9uv8 + 97qT + XR + TVsBT6b3yoPpMAGhHA   Pc7nxAF5gPpuzatx0OTLPcmYucFmfqT / 1qA5WlgCnMNtczyNMH97lKFTNV7Njtek   jWEzAEQSyEWrkNpNlC4j6kMYyPzVXQeXUeZTgJ9FNnVZqmvfjip2N22tawMjrCn5   7KN / zN65EwY2oO9XsaTwwWmBu3NrDdMbzJnbxoWcFWj4RBwanR1XjQOVNhDwmCOl   / 1Et13b8CPyj69PC8BOVU6cfTSx8WUVy0qvYOKHNY9Bqa5BDnIL3IVmUkeTlM1mt   enRpyBj + 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

成为"信任商店"使用keytool生成的文件。 --driver-java-options将允许信任库文件在从属环境中可用。

参考:

连接到Amazon Aurora数据库群集: 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