WordPressのテーマ(STINGER8)でプロトコルをhttpからhttpsにしたいと思います。
この記事では、Certbot クライアントをインストール~バーチャルホスト設定まで紹介します。
環境
OS/ミドルウェア | バージョン |
---|---|
CentOS | 7.2.1511 |
Apache | 2.4.6 |
PHP | 7.0.28 |
MySQL | 5.7.21 |
WordPress | 4.9.4 |
Certbotクライアントをインストール〜Apacheへの設定
下記URLを参考にインストール及びApacheへの設定をする。
参考URL → CentOS 7 + Apache 2.4 に Let’s Encrypt の証明書を導入する手順
※サイトに記載してあるApacheの再起動では、再起動出来ないので、下記のコマンドで再起動をする。
[Apacheの再起動]
1 |
# systemctl restart httpd.service |
ファイアウォールの設定がどうなっているか確認。
[許可されているサービスの一覧を表示]
1 |
# firewall-cmd --list-services --zone=public |
[実行結果]
1 |
ssh dhcpv6-client http https mysql ftp |
httpsがあるので使用できる状態です。なければ下記のコマンドで追加して下さい。
1 |
# firewall-cmd --add-service=https --zone=public --permanent |
WordPressサイトをHTTPS化する手順
下記URLを参考にHTTPS化する。
参考URL → WordPressサイトをHTTPS化する手順
※上記サイト内の「3.WordPressのURL設定をHTTPSに変更する」で、WordPressの管理画面に入れない場合は、phpMyAdminから編集します。
ApacheでSSL(https)でバーチャルホストの設定
[ディレクトリの移動]
1 |
# cd /etc/httpd/conf.d |
[バックアップ]
1 |
# cp ssl.conf ssl.conf_bk |
[ファイルの編集]
1 |
# vi ssl.conf |
[ファイルの中身]
「NameVirtualHost *:443」をファイル内に追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# # When we also provide SSL we have to listen to the # the HTTPS port in addition. # Listen 443 https // 追加 NameVirtualHost *:443 ## ## SSL Global Context ## ## All SSL configuration in this context applies both to ## the main server and all SSL-enabled virtual hosts. ## ︙ |
[ファイルの作成]
1 |
# touch ssl_vhost.conf |
[ファイルの中身]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<virtualhost *:443> DocumentRoot "/var/www/html/プロジェクト名" ServerName サーバーのドメイン:443 ErrorLog logs/hp_ssl_error_log TransferLog logs/hp_ssl_access_log CustomLog logs/hp_ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" <Directory "/var/www/html/プロジェクト名"> Options FollowSymLinks Allow from all AllowOverride all </Directory> SSLCertificateFile /etc/letsencrypt/live/サーバーのドメイン/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/サーバーのドメイン/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/サーバーのドメイン/chain.pem </virtualhost> |
[Apacheの再起動]
1 |
# systemctl restart httpd.service |
最後に確認
/etc/httpd/conf/httpd.conf のファイルの中身を書き換え。
1 2 3 4 5 6 7 8 9 10 |
<Directory /> // コメントアウト # AllowOverride none AllowOverride ALL // コメントアウト # Require all denied </Directory> // コメントが外れていることを確認し、コメントアウトされていたら外す IncludeOptional conf.d/*.conf |
ConoHaVPSは AllowOverride が ALL になってないので、ALL にする。
これで .htaccess のリダイレクトが正しく反映されるようになる。
Let’s Encrypt の証明書の更新を自動化する手順 (cron)
下記URLを参考にcronに登録をする。
参考URL → Let’s Encrypt の証明書の更新を自動化する手順 (cron)
※webサーバーが起動中に更新をするとエラーになる。なので、オプション「–webroot」を付ける。
1 2 3 4 5 6 7 8 9 10 11 |
// シミュレーション # certbot renew --dry-run --webroot // cronの設定 # crontab -u root -e // シミュレーション 00 04 01 * * certbot renew --dry-run --webroot 2>&1 | mail -s "Let's Encrypt update information" myname@mydomain.com && systemctl restart httpd.service // 本番 00 04 01 * * certbot renew --webroot 2>&1 | mail -s "Let's Encrypt update information" myname@mydomain.com && systemctl restart httpd.service |
サイトのHTTPS化で必要となるGoogleサーチコンソールの再登録方法
下記URLを参考にGoogleサーチコンソールの再登録をする。
参考URL → サイトのHTTPS化で必要となるGoogleサーチコンソールの再登録方法
保護された通信にならない場合
[ディレクトリの移動]
1 |
# cd /etc/httpd/conf.d |
[ファイルの編集]
1 |
# vi ssl.conf |
[ファイルの中身_削除する場所]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost _default_:443> # General setup for the virtual host, inherited from global configuration #DocumentRoot "/var/www/html" #ServerName www.example.com:443 ︙ # Per-Server Logging: # The home of a custom SSL log file. Use this when you want a # compact non-error SSL logfile on a virtual host basis. CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> |
<VirtualHost _default_:443></VirtualHost>を全て削除します。
[ファイルの中身_最終的な中身]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# # When we also provide SSL we have to listen to the # the HTTPS port in addition. # Listen 443 https ## ## SSL Global Context ## ## All SSL configuration in this context applies both to ## the main server and all SSL-enabled virtual hosts. ## # Pass Phrase Dialog: # Configure the pass phrase gathering process. # The filtering dialog program (`builtin' is a internal # terminal dialog) has to provide the pass phrase on stdout. SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog # Inter-Process Session Cache: # Configure the SSL Session Cache: First the mechanism # to use and second the expiring timeout (in seconds). SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLSessionCacheTimeout 300 # Pseudo Random Number Generator (PRNG): # Configure one or more sources to seed the PRNG of the # SSL library. The seed data should be of good random quality. # WARNING! On some platforms /dev/random blocks if not enough entropy # is available. This means you then cannot use the /dev/random device # because it would lead to very long connection times (as long as # it requires to make more entropy available). But usually those # platforms additionally provide a /dev/urandom device which doesn't # block. So, if available, use this one instead. Read the mod_ssl User # Manual for more details. SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin #SSLRandomSeed startup file:/dev/random 512 #SSLRandomSeed connect file:/dev/random 512 #SSLRandomSeed connect file:/dev/urandom 512 # # Use "SSLCryptoDevice" to enable any supported hardware # accelerators. Use "openssl engine -v" to list supported # engine names. NOTE: If you enable an accelerator and the # server does not start, consult the error logs and ensure # your accelerator is functioning properly. # SSLCryptoDevice builtin #SSLCryptoDevice ubsec ## ## SSL Virtual Host Context ## |
※バーチャルホストを作成した場合に、デフォルトがあると競合してうまくいかないみたい?