.gitignore | ||
aws-cert | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE | ||
README.md |
aws-cert
A command line tool to create Amazon issued certificates and add them to load-balancers.
Install
Clone the projet wherever you have a version of Ruby and where you can install gems.
Use Bundler to install the dependencies : $ bundle install
Configuration
You can create a .env
file next to the script with configuration variables. It will be loaded by the script. Example :
$ cat .env
ELB_ARN="arn:aws:elasticloadbalancing:eu-west-3:123456789109:listener/app/MyELB/"
ELB_LISTENER_ARN="arn:aws:elasticloadbalancing:eu-west-3:123456789109:listener/app/MyELB/5b7f89aedb97fe05/8776e6f6d330148f"
AWS_REGION=eu-west-3
AWS_SECRET_ACCESS_KEY=
AWS_ACCESS_KEY_ID=
If you already use a global AWS configuration in ~/.aws/config
and ~/.aws/credentials
they will be loaded.
If you have profiles, you can add the profile name in the .env
file : AWS_PROFILE=my-profile
.
Usage
Sub-commands usually require an argument. You can use the domain name or the ARN.
List certificates
$ ./aws-cert list
Domain name: *.example.com
ARN: arn:aws:acm:eu-west-3:457017632624:certificate/9ae462d1-7042-4ee5-ab37-2b21baf9bdd9
Domain name: foo.bar.com
ARN: arn:aws:acm:eu-west-3:457017632624:certificate/f010c92e-f1f3-4ce2-96b1-9c64a1b70a89
Create a certificate
$ ./aws-cert create my.domain.com
Domain name:
ARN: arn:aws:acm:eu-west-3:457017632624:certificate/32d8ee16-0a3b-489a-8ebe-f3e036c0c2f4
Status: PENDING_VALIDATION
Created at: 2019-10-22 10:39:39 +0200
Not before:
Not after:
Issuer: Amazon
Renewable eligibility: INELIGIBLE
Validation option: _unavailable_
At this moment, the details of the certificates are unavailable. You must ask for the status after a few seconds.
Certificate status
$ ./aws-cert status my.domain.com
Domain name: my.domain.com
ARN: arn:aws:acm:eu-west-3:457017632624:certificate/32d8ee16-0a3b-489a-8ebe-f3e036c0c2f4
Status: PENDING_VALIDATION
Created at: 2019-10-22 10:39:39 +0200
Not before:
Not after:
Issuer: Amazon
Renewable eligibility: INELIGIBLE
Validation option: DNS
Status: PENDING_VALIDATION
Record name: _d5db3c0777493789dad41b72b45fc568.my.domain.com.
Record type: CNAME
Record value: _e889b6f815e2f5f70ec50b88db2e55ff.kirrbxfjtw.acm-validations.aws.
You need to update your domain zone in the DNS with a CNAME
record to validate your ownership of the domain.
After a few minutes/hours, AWS will validate the domain.
$ ./aws-cert status my.domain.com
Domain name: my.domain.com
ARN: arn:aws:acm:eu-west-3:457017632624:certificate/32d8ee16-0a3b-489a-8ebe-f3e036c0c2f4
Status: ISSUED
Created at: 2019-10-22 14:34:59 +0200
Not before: 2019-10-22 02:00:00 +0200
Not after: 2020-11-22 13:00:00 +0100
Issuer: Amazon
Renewable eligibility: INELIGIBLE
Validation option: DNS
Status: SUCCESS
Record name: _d5db3c0777493789dad41b72b45fc568.my.domain.com.
Record type: CNAME
Record value: _e889b6f815e2f5f70ec50b88db2e55ff.kirrbxfjtw.acm-validations.aws.
If the status is ISSUED
, you can proceed to the ELB.
Enable the certificate in the ELB
$ ./aws-cert enable my.domain.com
Certificate has been added to load-balancer, change DNS configuration :
Record name: my.domain.com.
Record type: CNAME
Record value: MyELB-123456789.eu-west-3.elb.amazonaws.com.
You need to update your domain zone in the DNS with a CNAME
record to point to the ELB domain.