将证书添加到AWS EC2客户端

时间:2015-08-04 12:26:48

标签: java ssl amazon-ec2 certificate aws-sdk

我使用的是EC2 java类。要成功连接到AWS账户,我必须使用keytool命令将证书(.crt文件)添加到本地Java cacerts文件,该命令在代码本地运行时运行良好。 问题是我需要在服务器上运行代码,我无法访问cacerts文件,因此我尝试使用ClientConfiguration类以编程方式添加证书。我将cacerts文件上传到服务器,程序将其作为KeyStore对象读取,并创建SSLSocketFactory实例:

SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore, "<password>");
ClientConfiguration clientConfig = new ClientConfiguration();
clientConfig.getApacheHttpClientConfig().setSslSocketFactory(socketFactory);
AWSCredentials credentialsProvider = new BasicAWSCredentials("<key>", "<private key>");
AmazonEC2 ec2 = new AmazonEC2Client(credentialsProvider, clientConfig);

但它仍会产生HTTP Status 500 - Unable to execute HTTP request: peer not authenticated错误 我已经检查过使用密钥库的getCertificate方法可以成功读取添加的证书别名。
发送到"<password>"构造函数的SSLSocketFactory是密钥库的密码 这是向EC2添加证书的正确方法吗?

1 个答案:

答案 0 :(得分:0)

问题是不需要SSLSocketFactory构造函数的密码参数。将密码提供给KeyStore构造函数就足够了,对于SSLSocketFactory,它只是:

SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore);