たまに、技術検証用として、openssl コマンドで自己証明書(RSA)を作成して Web サーバ等に設定したりしています。
しかし、コマンドが覚えられず毎回調べ直してしまっているので、備忘録として自己証明書の作成方法、そして AWS の Application Load Balancer (ALB)への設定の仕方を書きます。
また、SSL 証明書の仕組みを、さっとおさらいしたいときは以下の記事を読み直しています。
自己証明書の作成方法
以下のコマンドで秘密鍵を作成します。
$ openssl genrsa -out ./server.key 2048
次に、以下のコマンドで公開鍵を作成します。後で使う ALB を東京リージョンで作成すると、現時点では「*.ap-northeast-1.elb.amazonaws.com」のドメインになるので、Common Name にはそのように設定しています。
$ openssl req -new -key ./server.key -out ./server.csr ... Country Name (2 letter code) []:JP State or Province Name (full name) []:Tokyo Locality Name (eg, city) []:Unknown Organization Name (eg, company) []:zuqqhi2 Organizational Unit Name (eg, section) []: Common Name (eg, fully qualified host name) []:*.ap-northeast-1.elb.amazonaws.com Email Address []: ... A challenge password []:
最後に、以下のコマンドで証明書を作成します。
$ openssl x509 -in ./server.csr -days 365 -req -signkey ./server.key -out ./server.crt
これで SSL 自己証明書の作成は完了です。
次に、作成した証明書を AWS の ALB に設定してみます。
AWS ALB への作成した SSL 自己証明書の設定
作成した証明書を AWS Certificate Manager (ACM) へインポートします。
ACM コンソールの「証明書のインポート」をクリックします。

「証明書本文」に server.crt の中身を、「証明書のプライベートキー」に server.key の中身をコピーします。「証明書チェーン」は空欄のまま、「次へ」をクリックします。(画像ではエラーが出てますが、コピーしたあと別の欄を選択すると、正しく作成できている場合はエラーは表示されません。)

次の画面で、「レビューとインポート」をクリックし、その後「インポート」をクリックすることで、作成した証明書を ACM にインポートすることができます。
ALB のバックエンドとして、以下のように設定した EC2 インスタンスを作成します。以下の表に記載していない項目についてはすべてデフォルトです。また、以降はデフォルトの VPC にインターネットゲートウェイが設定されている前提で勧めます。
設定項目 | 値 |
Amazon マシンイメージ(AMI) | Amazon Linux 2 AMI (HVM), SSD Volume Type 01748a72bed07727c |
インスタンスタイプ | t2.micro |
ユーザーデータ | #!/bin/bash sudo yum update -y sudo yum install -y httpd echo Welcome to $HOSTNAME > /var/www/html/index.html service httpd start chkconfig httpd on |
セキュリティグループ | default |
次に、ターゲットグループを作成し(名前以外、すべてデフォルトの設定)、先ほど作成した EC2 インスタンスをターゲットに追加します。
最後に以下のように設定した ALB を作成します。
設定項目 | 値 |
ロードバランサーの種類 | Application Load Balancer |
名前 | 適当に設定してください。 |
ロードバランサーのプロトコル | 「リスナーの追加」をクリックして、 プロコトルが「HTTPS(セキュア HTTP)」でポートが「443」のリスナーを追加します。 |
アベイラビリティーゾーン | ap-northeast-1a 、ap-northeast-1c 、ap-northeast-1d すべて選択します。 |
セキュリティ設定の構成 | 証明書タイプ: ACM から証明書を選択する (推奨) 証明書の名前: 先ほど作成した自己証明書 |
セキュリティグループ | – default – 以下のインバウンドルールを持つセキュリティグループ タイプ: HTTP 、HTTPS ソース: マイ IP |
ターゲットグループ | ターゲットグループ: 既存のターゲットグループ 名前: 先ほど作成したターゲットグループ |
ALB のプロビジョニングが終了したら、HTTPS プロトコルで ALB の DNS 名にアクセスしてください。
警告は無視してアクセスしてください。Google Chrome の場合は、以下の記事の方法で警告を無視することができました。
「Welcome to …」というようなテキストのみ表示される画面が出たら、設定完了です。