http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html
Required Software
Verifications
C:\Users\David>aws --version
aws-cli/1.7.6 Python/2.7.9 Windows/7
C:\Users\David>openssl version
OpenSSL 0.9.8e 23 Feb 2007
Reference
Generate Private Key
E:\a_team\isajohnson-ssl>openssl genrsa 2048 > private-key.pem
Generating RSA private key, 2048 bit long modulus
...+++
.................+++
Generate CSR
IMPORTANT: When generating your CSR, the Common Name must match your domain (ie: apps.isajohnson.com). If you are generating a wildcard cert request, this Common Name must be something like *.isajohnson.com
E:\a_team\isajohnson-ssl>openssl req -new -key private-key.pem -out csr.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:Rochester
Organization Name (eg, company) [Internet Widgits Pty Ltd]:isajohnson
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:apps.isajohnson.com
Email Address []:david@isajohnson.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:thisIsn'tReallyMyPass!
An optional company name []:
E:\a_team\isajohnson-ssl>ls
csr.pem private-key.pem
Sign CSR
StartSSL.com -> Fast Lane
- OR -
E:\a_team\isajohnson-ssl>aws configure
AWS Access Key ID [None]: {stuff}
AWS Secret Access Key [None]:{stuff}
Default region name [us-east-1]: us-east-1
Default output format [None]:
E:\a_team\isajohnson-ssl>aws iam upload-server-certificate --server-certificate-name apps.isajohnson.com --certificate-body file://ssl.crt --private-key file://private-key.pem --certificate-chain file://sub.class1.server.ca.pem --path /cloudfront/apps/
{
"ServerCertificateMetadata": {
"ServerCertificateId": "{stuff}",
"ServerCertificateName": "apps.isajohnson.com",
"Expiration": "2016-02-12T17:56:50Z",
"Path": "/cloudfront/apps/",
"Arn": "arn:aws:iam::{stuff}:server-certificate/cloudfront/apps/apps.isajohnson.com",
"UploadDate": "2015-02-12T03:42:36.198Z"
}
}