ZeroSSLで当サイトをhttps化

ZeroSSLより証明書ダウンロード

ZeroSSLで当サイトをhttps化した手順スクリーンショット

Get Free SSL

 New Certificate 

ドメイン名yeh.jpを入力し  Next Step → 

90-Day Certificateを選択し  Next Step → 

Next Step → 

 

Freeを確認して  Next Step → 

Email Verificationを選択しメールを待つも全然メールが送られてこなかったので
HTTP File Upload を選択
Download File をクリックし認証ファイル(テキストファイル)をダウンロードし
DocumentRootの直下に/.well-known/pki-validation フォルダを作成し認証ファイルをSCPで転送

外部からテキストファイルがアクセスできるか確認→OK

ファイル設置後  Verify Domain  クリック

ZeroSSLで確認され 証明書がダウンロード出来る(Download Certificate(.zip))

zipファイル ダウンロード後

zipファイルの中身(以下の3ファイル)

ca_bundle.crt:ルート証明書
certificate.crt:サーバー証明書
private.key:サーバー秘密鍵

Email Verificationを選択しメールを待つも全然メールが送られてこなかったが、HTTPで認証を済ませた後にメールは送られてきました。(遅い、、、)

サーバ設定

証明書・秘密鍵ファイルの設置

/etc/ssl/
ca_bundle.crt
certificate.crt
private.key
を設置

バックアップ

WordPressで用いているMySQLデータベースのダンプを取得(バックアップ)
20210418_yeh_mysql.dmp

Public_html配下を全部バックアップ
20210418_public_htmlBK.tar.gz

MySQLデータベースのUpdate

マルチサイトとして設定しているWordPressで用いているDBテーブルの記述をhttpをhttpsにUpdate 今回はphpMyAdminを使用

wp-options
編集からhttpをhttpsとする。

Apache Config設定 1IPアドレスのマルチサイト設定

conf.d内にVirtualHost設定

Rewrite設定

Port80
http://itamae-dining.ddo.jp(廃止予定)→https://fujisawa-sho.jp
http://yeh.jp→https://yeh.jp

→https://fujisawa-sho.jp

#itamae-dining:80
<VirtualHost *:80>
   ServerName itamae-dining.ddo.jp
   DocumentRoot /home/itamae-dining/public_html/
   RewriteEngine On
   RewriteCond %{http_host} ^itamae-dining\.ddo\.jp
   RewriteRule ^(.*)$ https://fujisawa-sho.jp$1 [R=301,L]
</VirtualHost>

#yeh.jp:80
<VirtualHost *:80>
   ServerName yeh.jp
   DocumentRoot /home/httpd/public_html/
   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

#fujisawa-sho:80
<VirtualHost *:80>
   ServerName fujisawa-sho.jp
   DocumentRoot /home/itamae-dining/public_html/
   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

#yeh.jp:443
<VirtualHost *:443>
   ServerName yeh.jp
   DocumentRoot /home/httpd/public_html/
   ErrorLog logs/yeh-error_log
   CustomLog logs/yeh_log common
   SSLEngine On
   SSLProtocol All -SSLv2 -SSLv3 -TLSv1
   SSLCertificateFile       /etc/ssl/certificate.crt
   SSLCertificateKeyFile    /etc/ssl/private.key
   SSLCertificateChainFile  /etc/ssl/ca_bundle.crt
</VirtualHost>

#fujisawa-sho.jp:443
<VirtualHost *:443>
   ServerName fujisawa-sho.jp
   DocumentRoot /home/itamae-dining/public_html
   ErrorLog logs/itamae-error_log
   CustomLog logs/itamae-access_log common
   SSLEngine On
   SSLProtocol All -SSLv2 -SSLv3 -TLSv1
   SSLCertificateFile /etc/ssl/fujisawa-sho.jp/certificate.crt
   SSLCertificateKeyFile /etc/ssl/fujisawa-sho.jp/private.key
   SSLCertificateChainFile /etc/ssl/fujisawa-sho.jp/ca_bundle.crt
</VirtualHost>

# apachectl configtest
Syntax OK

# systemctl restart httpd

備忘録的今回のRewrite設定

RewriteCond %{http_host} ^itamae-dining\.ddo\.jp
→もしURLホスト名がitamae-dining.ddo.jpだったら
RewriteRule ^(.*)$ https://fujisawa-sho.jp$1 [R=301,L]
→^(.*)$ 正規表現 https://fujiwa-sho.jp

当初はネットほぼコピペで$1の前に/を記述していた。これは.htaccess内でconfは/不要
RewriteRule ^(.*)$ https://fujisawa-sho.jp/$1 [R=301,L]
Logを見ていて判明しました。

RewriteCond %{HTTPS} off
→https以外からの通信の時
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
→httpsにリライトする

RewriteCond 書換を実行する条件
RewriteRule リライトのルール
%{http_host} URLホスト名の変数
\ エスケープ この場合は.をそのまま文字の.として認識させる
^(.*)$ ^行頭 .任意の一文字 * 直線の文字を0回以上繰り返す $ 行末=全てにマッチ
R=301 恒久的に変更される時の転送処理
L URL書き換え処理を中止し以降は書き換えを行わないようにする
$1 一つ前の()中身 上記の場合ドメイン名以降のURLを指す

Rewriteのログ

#itamae-dining:80
<VirtualHost *:80>
LogLevel info rewrite:trace2
</VirtualHost>

記述を追加し
systemctl restart httpd
tail -f /var/log/httpd/error_log
[Sun May 23 16:47:42.096540 2021] [rewrite:trace1] [pid 20423] mod_rewrite.c(470): [client アクセス元のIPアドレス:54004] アクセス元のIPアドレス - - [itamae-dining.ddo.jp/sid#7f2bfa11e978][rid#7f2bfa3a3ac0/initial] redirect to https://fujisawa-sho.jp/ [REDIRECT/301]

リダイレクトされていることを確認

https化以外の失敗

テーマ設定が初期化してしまった

WordPressで使っているテーマが初期設定になってしまった。この際ということで、別テーマで設定を行っている。orz

WordPressサイトアップグレードが失敗 → 解決済み

注: https://yeh.jp の更新中に問題が発生しました。サーバーが稼働しているサイトに接続できない可能性があります。エラーメッセージ: cURL error 35: Encountered end of file

不具合を引きずりながら運用中

解決しました。メッセージ中のcURLに反応してcurlのupdateをしてみました。VPSがダメダメでまるごとのyum updateが出来ないので、
# yum update curl
-> トランザクションの確認を実行しています。
---> パッケージ curl.x86_64 0:7.29.0-25.el7.centos を 更新
---> パッケージ curl.x86_64 0:7.29.0-59.el7_9.1 を アップデート

よかった。。。

 

コメント