【发布时间】:2015-10-26 20:41:28
【问题描述】:
我正在使用 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 方法。
发送到SSLSocketFactory 构造函数的"<password>" 是密钥库的密码。
这是向 EC2 添加证书的正确方法吗?
【问题讨论】:
标签: java ssl amazon-ec2 certificate aws-sdk