LoginSignup
2
8

More than 5 years have passed since last update.

Certificate Managerで無料SSL証明書を発行しhttpsでサイトが見れるようになるまで

Posted at

経緯

  • 自作のサイトにhttpsで接続することになりました。
  • 調べるとAWSでは無料でSSL証明書を発行できるようです。
  • で、やってみました。

「AWSの無料SSL対応したいのだけどどうすれば・・」という方向けです。
間違いあれば指摘して頂けると嬉しいです。

やること

  • Certificate Managerで証明書発行
  • ELBでロードバランサを作成、アタッチ
  • Route53でAlias設定
  • Amazon LinuxのApache設定

※Amazon Linux上では既に何らかのウェブサイトが稼働していて、httpでブラウザから見れる状態とします。
※ドメインもRoute53で設定済みの状態とします。
※Apacheは2.4系です

本編

Certificate Managerで証明書発行

スクリーンショット 2018-02-26 17.34.40.png

「証明書のリクエスト」をクリックします。

スクリーンショット 2018-02-26 17.35.08.png

設定したいドメイン名を入力し次へ。

スクリーンショット 2018-02-26 17.35.39.png

「Eメールの検証」を選択し次へ
Eメールを選択するとドメインのwhoisに設定されたメールアドレス、または特定のメールアドレスにメールが来ます。
ここは後述します。
DNSの方は、、よく分からんかった

スクリーンショット 2018-02-26 17.35.58.png

「確定とリクエスト」をクリックします。

メールについては、お名前など使っている場合whoisのメルアドが自分らのものではありません。
AWSのFAQにお客様によってリクエストされたドメイン名の前に admin@、administrator@、hostmaster@、webmaster@、および postmaster@ を付加して生成された 5 つの特別なメールアドレスにも E メールが送られます。とあるので、この辺りのアドレスを受信可能な状態にしてメールを受け取ります。
https://aws.amazon.com/jp/certificate-manager/faqs/

メール内の承認用リンクをクリックすると承認が完了します。

ELBでロードバランサを作成、アタッチ

Certificate Managerで作成した証明書はEC2に直接設定することはできません。
ELBにアタッチしての使用となります。

スクリーンショット 2018-02-27 11.19.24.png

「ロードバランサーの作成」をクリック

スクリーンショット 2018-02-27 11.19.42.png

「Application Load Balancer」を選択

スクリーンショット 2018-02-27 11.20.10.png

名前:好きな名前を
スキーマ:インターネット向け
アドレスタイプ:ipv4

リスナー:HTTPの他にHTTPSを追加

アベイラビリティーゾーン:全部チェック

「セキュリティ設定の構成」をクリック

スクリーンショット 2018-02-27 11.21.17.png

ここで先ほどの証明書が登場します。

証明書タイプ:「ACMから証明書を選択する(推奨)」を選択し、下のプルダウンから先ほど作成した証明書を選択します。
セキュリティーポリシー:特にいじってないです

スクリーンショット 2018-02-27 11.21.29.png

セキュリティグループの設定ではHTTP、HTTPS、SSHが通るよう設定しました。

スクリーンショット 2018-02-27 11.21.48.png

ルーティングの設定は、名前を決めただけで後はデフォルト

スクリーンショット 2018-02-27 11.22.27.png

ターゲットの登録で、インスタンスを選択します

スクリーンショット 2018-02-27 11.22.47.png

これでELBの設定は完了です。

Route53でAlias設定

スクリーンショット 2018-02-26 17.56.04.png

既にRoute53を使っていた場合、ドメインの設定がCNAMEでEC2のIPを打っていたと思いますが、
AliasをYesにするとAlias Targetに先ほど作成したELBが現れるのでそれを選択します。
選択したら「Save Record Set」をクリックし確定します。

Amazon LinuxのApache設定

Route53でエイリアスまで設定してブラウザからhttpsで見ようとすると
502 Bad Requestとなりました。

apacheのerror_logを確認するとmod_sslが入っていないとの事だったので設定します。

mod24_sslインストール

console
$ sudo yum install -y mod24_ssl

バーチャルホスト設定

hoge.conf
<VirtualHost *:80>
    DocumentRoot /var/www/hoge/fuga/piyo
    ServerName hoge.fuga.com

    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

    <Directory "/var/www/hoge/fuga/piyo">
        Options Indexes FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

apache再起動

console
$ sudo service httpd restart

参考

https://qiita.com/ozw/items/05a6f4d1addaa557f70a
https://qiita.com/michimani/items/88973c5e2ae76a8e84aa
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SSL-on-an-instance.html
https://aws.amazon.com/jp/certificate-manager/faqs/

2
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
8