おじさんAのプログラムメモ

30代のおじさんの主にプログラムについてのブログです

自己証明書を作成してAWSのELBに設定する

このページを参考にする前に

自分でドメインを取得している方は、ACSで無料で証明書を作れるらしいので、そちらを使ったほうがいいです dev.classmethod.jp

それ以外の方は、 ELBはもう作成済みとする

自己証明書を作成

# 作業用ディレクトリに入る
$ mkdir keyfuck
$ cd keyfuck

# 鍵を作成する
$ openssl genrsa -out ./server.key 2048

# CSRを作成する
# いろいろ質問されるので適時回答する。Common NameにはELBのDNS nameを指定する
$ openssl req -new -key ./server.key -out ./server.csr
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Nakano
Organization Name (eg, company) [Internet Widgits Pty Ltd]:fuckyou
Organizational Unit Name (eg, section) []:fuckyou
Common Name (e.g. server FQDN or YOUR name) []:eleb-xxxx.ap-northeast-1.elb.amazonaws.com                         [ Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

# CSRを秘密鍵で署名してCRTを作成する
$ openssl x509 -in server.csr -days 365 -req -signkey server.key -out server.crt

ちなみに上記の方法でやった場合は自己証明書になるので、アクセス時に警告が発生します。 それが嫌な場合はLet’s Encryptなどを使用してください。

無料SSL/TLS証明書のLet’s Encryptが正式版になったので自動更新を含めて試してみた | Webセキュリティの小部屋

AWSに証明書をアップロードする

本当はAWSのコンソール画面から出来るはずなんだけど、なんかエラーでる

参考 http://cyborg-ninja.com/ittips/3336

しょうがないので、AWS-CLIでアップロードする

# elb-server-certの部分は任意
aws iam upload-server-certificate --server-certificate-name elb-server-cert --certificate-body server.crt --private-key server.key

AWS-CLIが入っていない人は、インストール&設定

$ brew install awscli
$ aws configure # それなりの権限があるIAMのAccess Key IdとSecret Access Keyを設定する。

ELBに証明書を設定する

  • AWSコンソール
  • EC2
  • Load Balancers
  • 該当のELB
  • Listeners
  • HTTPSの行を用意
  • SSL Certificate change
  • 「Choose an existing certificate from AWS Identity and Access Management (IAM)」
  • Save

でOK。