2017-08-03 41 views
0

我試圖使用aws-sdk-ruby將證書導入到ACM。但是,當我嘗試使用以下任一方法使用Aws::ACM::Client#import_certificate時,堆棧跟蹤告訴我我的私鑰不是1024或2048.如果是Entrust不會簽署我的證書。我還告訴openssl程序生成2048aws-sdk-ruby Aws :: ACM :: Client#import_certificate文件路徑或文件內容

錯誤消息

私鑰不支持。只允許使用RSA 1024位和2048位專用密鑰。

第一個代碼示例

def acm_upload(options) 
    require 'aws-sdk' 
    @aws_region = ENV['AWS_REGION'] || ENV['AWS_DEFAULT_REGION'] || 'us-west-2' 
    @aws_profile = ENV['AWS_PROFILE'] || ENV['AWS_DEFAULT_PROFILE'] || 'default' 

    acm = Aws::ACM::Client.new(region: @aws_region, profile: @aws_profile) 
    begin 
    puts '=> Uploading Key, Cert, and Chain to ACM.' 
    aws_response = acm.import_certificate({ 
     certificate: options[:cert_name], 
     private_key: options[:key_name], 
     certificate_chain: options[:chain_name], 
    }) 
    rescue Aws::ACM::Errors::ServiceError => e 
    puts 'An AWS ACM Service Error has occured.' 
    raise e.message 
    rescue Aws::Errors::ServiceError => e 
    puts 'An AWS Error has occured.' 
    raise e.message 
    end 

    puts aws_response 
end 

acm_upload({ 
    cert_name: './ssl/certificate/signed_cert.crt', 
    key_name: './ssl/key/private_key.pem', 
    chain_name: './ssl/chains/cert_chain.crt' 
}) 

第一個方法調用說我的重點不是2048位。然後第二種方法也是如此:

acm_upload({ 
    cert_name: File.read('./ssl/certificate/signed_cert.crt'), 
    key_name: File.read('./ssl/key/private_key.pem'), 
    chain_name: File.read('./ssl/chains/cert_chain.crt)' 
}) 

與上面相同的錯誤。這份文件對我的期望並不是很清楚。它說數據,我認爲這是證書文件的內容。有沒有其他人有過這個問題?

我能夠使用aws Python CLI將密鑰,證書和鏈上傳到ACM,它們使用file://提供的CLI。

回答

0

嘗試AWS CLI,看看是否適合你:

aws acm import-certificate --certificate file://certificate.crt --private-key file://private_key.key --certificate-chain file://certificate_chain.crt 

AWS --version

注:與版本不兼容:AWS-CLI/18年1月14日的Python/2.7.9的Windows/8 botocore/22年8月1日

注:與版本不兼容:AWS-CLI/21年1月10日的Python/2.7.9的Windows/8 botocore/1.4.12

+0

我能上載的密鑰,證書,並使用aws Python CLI鏈接到ACM y提供使用file://。 – Pred