LoginSignup
10
7

More than 5 years have passed since last update.

AWS上のWordpressでLet's Encryptを利用する

Posted at

目的

AWS EC2上のWordpressをhttpsで接続させたい。現在はhttpで接続を受け付けている。

Wordpressはbitnamiのパッケージをインストールした。

この記事の全体像

  1. 証明書を作成する
  2. ELBの設定を行う
  3. Wordpress側の設定を行う

1. 証明書を作成する

ポイントは以下の通り

  • AWS上のFWを解放する
  • sslで利用するドメイン配下のサーバで作成する

作業流れ

  • ELB(ロードバランサ)の443ポートを空ける とりあえずTCPで443を空ける必要がある(証明書がまだないからhttpsはあけられない)

elb_open.png

  • EC2側で443を受け付ける
    インスタンス→セキュリティグループ→インバウンド
    EC2_open.png

  • letsencryptのコマンドを実行する
    helpするとパッケージがDLされる。Congratulations!と出れば成功。

  $ git clone https://github.com/letsencrypt/letsencrypt
  $ cd letsencrypt
  $ ./letsencrypt-auto --help
  $ ./letsencrypt-auto certonly -a standalone -d <domain>
  Updating letsencrypt and virtual environment dependencies......
  Requesting root privileges to run with virtualenv: sudo /home/bitnami/.local/share/letsencrypt/bin/letsencrypt certonly --standalone -d <domain>

  IMPORTANT NOTES:
   - Congratulations! Your certificate and chain have been saved at
     /etc/letsencrypt/live/column.clintal.com/fullchain.pem. Your cert
     will expire on 2016-05-08. To obtain a new version of the
     certificate in the future, simply run Let's Encrypt again.
   - If you like Let's Encrypt, please consider supporting our work by:

     Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
     Donating to EFF:                    https://eff.org/donate-le 
  • ファイルが存在することを確認する 実体は、/etc/letsencrypt/archive/<domain>にあることに注意
  $ sudo ls /etc/letsencrypt/live/<domain>

エラー

  • ELBでポートがちゃんと開放できていないと以下のエラーが表示される
  IMPORTANT NOTES:
   - The following errors were reported by the server:

      Domain: <domain>
      Type:   urn:acme:error:connection
      Detail: Failed to connect to host for DVSNI challenge

まとめ

  • ここまでが準備

2. ELBの設定を行う

ポイントは以下の通り

  • アップする内容を間違えないように

作業流れ

  • ELBにSSL証明書をアップする ロードバランサ→リスナー→編集
    • ロードバランサーのプロトコル: HTTPS(セキュアHTTP), 443
    • インスタンスのプロトコル: HTTP, 80
    • SSLは1で取得したファイルの中身をそのままコピペする
      • プライベートキー: privkey1.pem
      • パブリック証明書: cert1.pem
      • 証明書チェーン: chain1.pem
  • 完成図はこんな感じ ELB_complete.png

まとめ

  • ここまでできると、サイトへhttpsでアクセスすることができる
  • ただし、CSSとかが残念な感じ
  • httpは今まで通り利用可能

3. Wordpress側で設定する

ポイントは以下の通り

  • 管理ページについて、wp-config.phpに記載する場所に注意

作業流れ

  • サイトURLを変更する 管理画面から変更できれば画面から。できない場合はwp-config.phpを編集する
wp-config.php
  define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/');
  define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');
  • 管理画面のSSL化 wp-config.phpに以下を記載する。 ただしrequire_once(ABSPATH . 'wp-settings.php');より前に書かないとダメらしい!
wp-config.php
  define('FORCE_SSL_ADMIN', true);
  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === "https") {
    $_SERVER['HTTPS'] = 'on';
  }

エラー

管理画面の設定の書く場所を間違えると、ログイン後に(ログイン画面は問題ない)以下のエラーが発生して混乱する。
ググっても、DBのテーブルの接頭辞を変更しろとかばっかり出てきて困る。

このページにアクセスするための十分なアクセス権がありません

まとめ

  • これで管理画面は対応完了
  • 通常画面は、HTTPでもHTTPSでもどちらでもアクセスできるようになっているはず

参考

10
7
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
10
7