「Web」カテゴリーアーカイブ

SSL証明書の更新をする

当ブログは常時SSL化をしていますが、期限切れまで1ヶ月を切ったので、9/24に更新をしてみました。

Let’s Encryptは「certbot renew」コマンドで更新が出来ます。
とりあえずそのまま打つと、

$ sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

——————————————————————————-
Processing /etc/letsencrypt/renewal/aoboshi.org.conf
——————————————————————————-
Cert is due for renewal, auto-renewing…
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for aoboshi.org

——————————————————————————-
The program apache2 (process ID 26473) is already listening on TCP port 443.
This will prevent us from binding to that port. Please stop the apache2 program

temporarily and then try again. For automated renewal, you may want to use a
script that stops and starts your webserver. You can find an example at
https://certbot.eff.org/docs/using.html#renewal . Alternatively you can use the
webroot plugin to renew without needing to stop and start your webserver.
——————————————————————————-
Cleaning up challenges
Attempting to renew cert from /etc/letsencrypt/renewal/aoboshi.org.conf produced an unexpected error: At least one
of the required ports is already taken.. Skipping.

——————————————————————————-
Processing /etc/letsencrypt/renewal/www.aoboshi.org.conf
——————————————————————————-
Cert not yet due for renewal

The following certs are not due for renewal yet:
/etc/letsencrypt/live/www.aoboshi.org/fullchain.pem (skipped)
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/aoboshi.org/fullchain.pem (failure)
1 renew failure(s), 0 parse failure(s)
$

apacheを落としてくださいと表示をされたので、「systemctl stop apache2」で停止、

再度実施すると、

$ sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

——————————————————————————-
Processing /etc/letsencrypt/renewal/aoboshi.org.conf
——————————————————————————-
Cert is due for renewal, auto-renewing…
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for aoboshi.org
/usr/lib/python2.7/dist-packages/OpenSSL/rand.py:58: UserWarning: implicit cast from ‘char *’ to a different pointe
r type: will be forbidden in the future (check that the types are as you expect; use an explicit ffi.cast() if they
are correct)
result_code = _lib.RAND_bytes(result_buffer, num_bytes)
Waiting for verification…
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0002_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0002_csr-certbot.pem

——————————————————————————-
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live/aoboshi.org/fullchain.pem
——————————————————————————-

——————————————————————————-
Processing /etc/letsencrypt/renewal/www.aoboshi.org.conf
——————————————————————————-
Cert not yet due for renewal

The following certs are not due for renewal yet:
/etc/letsencrypt/live/www.aoboshi.org/fullchain.pem (skipped)
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/aoboshi.org/fullchain.pem (success)

$

「aoboshi.org」の証明書更新は問題なくできました。
「www.aoboshi.org」に関しましては、1ヶ月以上期限があるので更新不要とスキップされました。

その後、落としたapacheを「systemctl start apache2」で立ち上げてもWebサイトに接続できなくなりましたが、
「systemctl restart apache2」で再起動したら無事接続できるようになりました。

数日後、www.aoboshi.orgの証明書も更新しようと思い、
まず「certbot certificates」で証明書の状態を確認したところ、

# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

——————————————————————————-
Found the following certs:
Certificate Name: aoboshi.org
Domains: aoboshi.org
Expiry Date: 2018-12-23 13:12:31+00:00 (VALID: 85 days)
Certificate Path: /etc/letsencrypt/live/aoboshi.org/fullchain.pem
Private Key Path: /etc/letsencrypt/live/aoboshi.org/privkey.pem
Certificate Name: www.aoboshi.org
Domains: www.aoboshi.org
Expiry Date: 2018-12-26 11:21:35+00:00 (VALID: 88 days)

Certificate Path: /etc/letsencrypt/live/www.aoboshi.org/fullchain.pem
Private Key Path: /etc/letsencrypt/live/www.aoboshi.org/privkey.pem
——————————————————————————-
#

www.aoboshi.orgについても更新がされていました。
更新をした覚えはないので調べたところ、

$ sudo systemctl list-timers
NEXT LEFT LAST PASSED UNIT AC
Sun 2018-09-30 09:03:46 UTC 4h 5min left Sat 2018-09-29 09:03:46 UTC 19h ago systemd-tmpfiles-clean.timer sy
Sun 2018-09-30 12:00:00 UTC 7h left Sun 2018-09-30 00:00:01 UTC 4h 57min ago certbot.timer ce
2 timers listed.
Pass –all to see loaded but inactive timers, too.
$

日次でアップデートを実行する設定がLet’s Encrypt設定時にsystemdに組み込まれていたので、自動で更新されていたことがわかりました。

SSL接続をさらにsecureへ

当ブログは常時SSL化をしておりますが、SSL Server Test (Powered by Qualys SSL Labs)で診断を行ったところ、

結果が一部不備がある「B」を判定されてしまいました。

どうやら、Forward secrecyと言うものが有効になっていないのが問題でした。

設定方法を調べたところ、Mozillaが設定ジェネレータを用意していることを知り、
Generate Mozilla Security Recommended Web Server Configuration Files

早速、使用しているソフトとそのバージョンを入力し、設定を作成、

# intermediate configuration, tweak to your needs
SSLProtocol all -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder on
SSLCompression off

# OCSP Stapling, only in httpd 2.3.3 and later
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/ocsp(128000)

の部分をコピーし、

サーバ上のコンフィグの直下に貼り付けて、
apacheの再起動を行ったところ、

無事に「A」判定になりました。

トップページで記事を抜粋表示にするよう修正しました

今まで、当ブログを開くと、indexでも記事が前文表示されてしまい、非常に見づらい表示だったので修正いたしました。

詳細は下記へ。

【修正方法】
※この例は当ブログで使用しているテーマ、「Twenty Twelve」の場合の話です。他のテーマでも参考になるかもしれませんが、完全に同じにはならない可能性があります。

1. テーマの編集でcontent.phpを開く

外観>テーマの編集>content.php を選択します。

2.content.phpの修正

下記のような記載があるので、

<?php if ( is_search() ) : // Only display Excerpts for Search ?>
<div class=”entry-summary”>
<?php the_excerpt(); ?>
</div><!– .entry-summary –>
<div class=”entry-summary”>
<?php the_excerpt(); ?>
</div><!– .entry-summary –>
<?php else : ?>
<div class=”entry-content”>
<?php the_content( __( ‘Continue reading <span class=”meta-nav”>→</span>’, ‘twentytwelve’ ) ); ?>

下記の太字部分を追記し、「ファイルを更新」ボタンを選択します。

<?php if ( is_search() ) : // Only display Excerpts for Search ?>
<div class=”entry-summary”>
<?php the_excerpt(); ?>
</div><!– .entry-summary –>
<?php elseif ( is_archive() ) : // 一覧の際はサマリー表示に ?>
<div class=”entry-summary”>
<?php the_excerpt(); ?>
</div><!– .entry-summary –>
<?php elseif ( is_home() ) : // トップページの際はサマリー表示に ?>
<div class=”entry-summary”>
<?php the_excerpt(); ?>
</div><!– .entry-summary –>

<?php else : ?>
<div class=”entry-content”>
<?php the_content( __( ‘Continue reading <span class=”meta-nav”>→</span>’, ‘twentytwelve’ ) ); ?>

【解説】

WordPressでは「the_excerpt()」は抜粋表示、「the_content()」は全文表示を意味します。
初期の設定では、検索結果のページ「is_search()」以外は「the_content()」が指定されていたため、
「elseif」でor条件を追加し、カテゴリや日付などの一覧ページ「is_archive」や、トップページ「is_home()」の場合も「the_excerpt()」となるように書き換えました。

wp-admin.phpのURLを変更する

Apacheのアクセスログを見ていたところ、wp-admin.php(WordPressのログインページ)に大量にアクセスがありました。
ログイン試行をされていたようです。

幸い、デフォルトのAdminユーザは削除済みであり、パスワードも単純ではないため認証を突破されずに諦めたようでしたが。

今後が怖いため、wp-admin.phpにアクセスするURLを変えてみることにしました。

「WPS Hide Login」というプラグインを追加し、有効化

設定>一般設定
下部に「WPS Hide Login」項目が出来ているので、任意の他人には分かりにくいURLを設定し「変更を保存」を選択します。

※URLは必ずメモしておいてください

以降は、変更後URLを知らない限りログインできなくなります。

仕上げに、ブログ右下の「メタ情報」にリンクが残っているので削除をします。

外見>ウィジェット
から、「メタ情報」を選び、「削除」を選択します。

www.aoboshi.orgも常時SSL化

前回、Let’s encryptで本ブログを常時SSL化したことをお伝えしましたが、
本ブログは、https://aoboshi.orgだけではなく、サブドメイン付きのhttps://aoboshi.orgでも接続できるのですが、

https://aoboshi.orgで接続しようとすると、

「接続としているドメインと証明書のドメインが合ってない」と警告メッセージが表示されるようになってしまいました。

前回証明書を取得した際に、aoboshi.orgしか指定しておらず、www.aoboshi.orgを指定していなかったのが原因のようです。

前回、httpで接続してきたらhttpsにリダイレクトするように設定した設定に、
www.aoboshi.orgで接続してきたらaoboshi.orgにリダイレクトする条件を追加しましたが、
/etc/apache2/sites-available/wordpress.conf

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

↓太字部分を追加

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.aoboshi.org$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

状態は変わりませんでした。

そこで、www.aoboshi.org用に証明書を取り直し、バーチャルホストの設定を追加することにしました。

1.証明書取得
www.aoboshi.org用の証明書を取得します。

まずapacheを停止。

$ systemctl stop apache2

下記コマンドで証明書を取得します。

$ sudo certbot certonly –webroot -w /var/www/html -d www.aoboshi.org
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.aoboshi.org
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification…
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0001_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0001_csr-certbot.pem

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.aoboshi.org/fullchain.pem. Your cert will
expire on 2018-10-27. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again. To
non-interactively renew *all* of your certificates, run “certbot
renew”
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

2.バーチャルホストの設定
前回https用にバーチャルホストを設定したdefault-ssl.confに、www.aoboshi.org用のバーチャルホストを設定しようと思ったのですが、1ファイルに混在していると分かりにくいので、コピーして該当箇所のみ変更しました。

www.aoboshi.org用にwwwdefault-ssl.confを作成

$ pwd
/etc/apache2/sites-available
$ cp -ip default-ssl.conf wwwdefault-ssl.conf
vi wwwdefault-ssl.conf

ServerNameとSSL証明書の置き場所のみ変更する。

$ diff default-ssl.conf wwwdefault-ssl.conf
3c3
< ServerName aoboshi.org --- > ServerName www.aoboshi.org
33,34c33,34
< SSLCertificateFile /etc/letsencrypt/live/aoboshi.org/fullchain.pem < SSLCertificateKeyFile /etc/letsencrypt/live/aoboshi.org/privkey.pem --- > SSLCertificateFile /etc/letsencrypt/live/www.aoboshi.org/fullchain.pem
> SSLCertificateKeyFile /etc/letsencrypt/live/www.aoboshi.org/privkey.pem
naoto70@wordpress-1-vm:/etc/apache2/sites-available$

wwwdefault-ssl.confを下記コマンドで有効化します。

$ sudo a2ensite wwwdefault-ssl.conf
Enabling site wwwdefault-ssl.
To activate the new configuration, you need to run:
service apache2 reload

最後にapacheを起動すれば完了です。

$ systemctl start apache2

これで、www.aoboshi.orgで接続が出来るようになりました。

【2018/9/23追記】

aoboshi.orgまたはwww.aoboshi.org以外のサブドメイン以外の、SSL証明書の存在しない存在しないサブドメインでhttp://〜をhttps://〜にリダイレクトしないよう、wordpress.confのリダイレクトの設定を下記に書き換えました。
(太字が変更場所)

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.aoboshi.org$ [OR]
RewriteCond %{HTTP_HOST} ^aoboshi.org$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

[どうにか完了]Let’s Encrypt導入に悪戦苦闘

最近ブログを更新しようとWordpressにログインしようとするとSafariのURL表示のところに「Webサイトが安全ではありません」と表示されるようになってしまいました。

http接続のためだそうですが、いくら自分のサイトだからといって正直気になります。

また、最近はChromeがhttp接続の場合はログイン時に限らず警告を表示するようになるなど、

「Google Chrome 68」公開、HTTPサイトには容赦なく警告を表示する仕様に – INTERNET Watch

httpsが標準になりつつある時代になってきたこともあり、

当ブログでもLet’s Encryptを使用して常時https化してみました。

Wikipediaに
「LinuxのWebサーバーでは、HTTPSの暗号化の設定および証明書の取得・更新がわずか2つのコマンドによって可能である。」
と書いてあるなど、結構簡単にできると書いている方が多かったですが、自分の場合は結構手間取ったので、作業履歴を書いていきたいと思います。

1.certbotのインストール

Let’s Encryptでhttps化に必要な証明書を取得し設定するのにcertbotというソフトを入れる必要があるので、インストールをします。
基本的にdebianはapt-getでインストールできるらしいのですが、
Debian 8 (jessie)では、リポジトリの追加が必要との情報があり、確認してみたところ、

$ cat /etc/os-release
PRETTY_NAME=”Debian GNU/Linux 8 (jessie)”
NAME=”Debian GNU/Linux”
VERSION_ID=”8″
VERSION=”8 (jessie)”
ID=debian
HOME_URL=”http://www.debian.org/”
SUPPORT_URL=”http://www.debian.org/support”
BUG_REPORT_URL=”https://bugs.debian.org/”
$

私が使用していたのもDebian 8 (jessie)でしたので、まずリポジトリの追加を行いました。

$ cd /etc/apt/sources.list.d/
$ sudo vi backports.list

下記の1行を追加

deb http://ftp.debian.org/debian jessie-backports main

certbotのインストール

$ sudo apt-get update
$ sudo apt-get install python-certbot-apache -t jessie-backports

2-1.certbotの起動・設定(失敗)

certbotを入れた終わったらcertbotを起動し、設定します。

$ sudo certbot –apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter ‘c’ to cancel):aoboshi.org ←ドメイン名を入れる
Enter email address (used for urgent renewal and security notices) (Enter ‘c’ to
cancel):xxxxxx@gmail.com←自分のメールアドレスを入れる
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

——————————————————————————-
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
——————————————————————————-
(A)gree/(C)ancel:

(A)gree/(C)ancel: A←同意する
Obtaining a new certificate
Performing the following challenges:
Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.

IMPORTANT NOTES:
– If you lose your account credentials, you can recover through
e-mails sent to xxxxxxx@gmail.com.
– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
$

なぜかエラーを吐いて落ちました。
やり直しても同じでした。

2-1.certbotの起動・設定・復旧

調べたところ別のコマンドで代用できるそうでしたのでやってみました。
apacheを止める必要があるので、止めます。

$ sudo systemctl stop apache2

standaloneモードでcertbotを起動。-d オプションの後に自分のドメイン名を指定します。

$ sudo certbot –authenticator standalone –installer apache -d aoboshi.org

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Cert not yet due for renewal

You have an existing certificate that has exactly the same domains or certificate name you requested and isn’t clos
e to expiry.
(ref: /etc/letsencrypt/renewal/aoboshi.org.conf)

What would you like to do?
——————————————————————————-
1: Attempt to reinstall this existing certificate
2: Renew & replace the cert (limit ~5 per 7 days)
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 1 ←中途半端に入ってしまったみたいなので入れ直す
Keeping the existing certificate

We were unable to find a vhost with a ServerName or Address of aoboshi.org.
Which virtual host would you like to choose?
(note: conf files with multiple vhosts are not yet supported)
——————————————————————————-
1: 000-default.conf | | |

2: default-ssl.conf | | HTTPS |
3: wordpress.conf | | | Enabled
——————————————————————————-
Select the appropriate number [1-3] then [enter] (press ‘c’ to cancel): 2 ←https用のバーチャルホストの設定をどのファイルに入れるのかを指定する。とりあえずそれっぽいのを指定
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/default-ssl.conf
Enabling available site: /etc/apache2/sites-available/default-ssl.conf

Please choose whether HTTPS access is required or optional.
——————————————————————————-
1: Easy – Allow both HTTP and HTTPS access to these sites
2: Secure – Make all requests redirect to secure HTTPS access
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 2 ←httpでアクセスしてきたらhttpsにリダイレクトさせる
Created redirect file: le-redirect-aoboshi.org.conf
Rollback checkpoint is empty (no changes made?)

——————————————————————————-
Congratulations! You have successfully enabled https://aoboshi.org

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=aoboshi.org
——————————————————————————-
$

apacheを立ち上げて、さあ確認。

$ sudo systemctl start apache2

…ブログに繋がらない状態になりました。httpsはおろかhttpsでも…。

試行錯誤した結果、/etc/hostsにホスト名とIPアドレスを入れたら復旧しました。

$ cd /etc
$ vi hosts

35.185.230.144 aoboshi.org

一応URLをhttpsにしても繋がるようになりました。

3.仕上げ
【リンクの修正】
https://aoboshi.org

で繋がるようになったのはいいのですが、SafariのURLバーに南京錠アイコンがつきません。
Firefoxで見てみたところ、

どうやら、画像指定がhttpで書いているため、httpsとhttpが混在していたようです。
以前も使用したSearch Regexで一括置換します。

置換後、Safari、Firefoxともにhttps接続である表示がされるようになりました。
  

WordPressのアドレス設定もhttpsに変えます。

【httpで接続してきたらhttpsにリダイレクトするようにする】
上記にも書いていますがcertbotで設定した際に

Please choose whether HTTPS access is required or optional.
——————————————————————————-
1: Easy – Allow both HTTP and HTTPS access to these sites
2: Secure – Make all requests redirect to secure HTTPS access
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):2

httpで接続してきたらhttpsにリダイレクトするようにする設定をしたはずなのに、httpでアクセスしてもhttpsになりません。
いろいろ調べた結果、バーチャルホストの設定が正常に入っていないのが原因であるようだとわかりました。
certbotも「We were unable to find a vhost with a ServerName or Address of aoboshi.org.」と言ってましたし。

/etc/apache2/sites-available/wordpress.conf
には、

と、http用の設定が入っているようなので、

に下記4行を追加してapacheを再起動したところ、

ServerName aoboshi.org
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

httpで接続してきたらhttpsにリダイレクトするようにするようになりました。

ついでに、

とhttps用の設定が入っている
/etc/apache2/sites-available/default-ssl.conf
にも
ServerName aoboshi.org
の1行が入ってなかったので入れました。

長々と書きましたが、なんとかhttps化することが出来ました。

4.その他、更新について
Let’s encryptで取得した証明書の期限は90日なので定期的に更新が必要です。
certbot renewコマンドで更新できるようなので、やってみようとしましたが、

$ sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

——————————————————————————-
Processing /etc/letsencrypt/renewal/aoboshi.org.conf
——————————————————————————-
Cert not yet due for renewal

The following certs are not due for renewal yet:
/etc/letsencrypt/live/aoboshi.org/fullchain.pem (skipped)
No renewals were attempted.

まだ期限じゃないから必要ないですよとスキップされます(まだ導入して数日ですし)。

systemdの設定を見ると、定期的に更新する設定が入っているようなので、静観です。

$ cd /lib/systemd/system/
$ cat certbot.timer
[Unit]
Description=Run certbot twice daily
[Timer]
OnCalendar=*-*-* 00,12:00:00
Persistent=true
[Install]
WantedBy=timers.target

$ cat /lib/systemd/system/certbot.service
[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://letsencrypt.readthedocs.io/en/latest/
[Service]
Type=oneshot
ExecStartPre=/usr/bin/perl -e ‘sleep int(rand(3600))’
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true

GoogleFormsでフォームを再作成しました

以前、WordPressのプラグインで作成したブログのお問い合わせフォームですが、

GCPに移行後、使えなくなってしまいました。
お問い合わせを受け取ったら、その内容をメール送信するのですが、
送られてこないのです。
調べたところ、

Google Compute Engine では、ポート 25、465、587 での送信接続は許可されません。これらの送信 SMTP ポートは、不正使用に利用されることが多いため、デフォルトでブロックされています。

インスタンスからのメールの送信  |  Compute Engine ドキュメント  |  Google Cloud

どうやら、これに引っかかっているみたいでした。

以前フォームからお問い合わせをいただいたこともあり、
フォームの廃止は出来ないので、検討した結果、GoogleFormsで作り直しました。

お問い合わせ | 青星総合研究所

今後とも当ブログをよろしくお願いいたします。

GCPでブラウザからSSH

GCPでブラウザからサーバにSSH接続することが出来ます。


コンソール画面から、「Compute Engine」→「VMインスタンス」を選択し、


「SSH」を選択すると、


ウィンドウが開いて、

操作が出来るようになります。root権限が必要な作業はsudoでできます。

とりあえず、
/etc/apache2/apache2.confに
「ServerTokens Prod」を追加するなど、セキュリティ対策を実施中です。

【さくら→Google移行作戦 後半】GCP設定・WordPress移行

前半に引き続き、サーバ移行です。
旧サーバから情報を抜きだし、GCP上にサーバをデプロイし、DNSの設定変更を行います。

1.旧サーバ作業
Wordpressの移行は初めてなので、ツールに頼ります。


移行元のさくらサーバのWordpress上に移動し、プラグイン「All-in-One WP Migration」をインストールします。


「All-in-One WP Migration」メニューから「エクスポート」を選択します。

 
「エクスポート先」をクリックし、「ファイル」を選択すると

エクスポートが始まります。


「DOWNLOAD」をボタンが出たら、それをクリックするとダウンロードが始まります。

2. GCP登録、サーバ設定

Google Cloudのサイトへ行き、「無料トライアル」を選択します。


住所や支払い登録をして、登録します。


出てきたページの「一般的なソリューション」「WordPress」を選択します。


「COMPUTE ENGINE上で起動」を選択します。

デプロイするサーバの設定値を聞かれるので、GCPの無料範囲内に収まるよう設定します。

Deployment name→適当に(たしかデフォルトそのままだった気が)
Zone→「us」を入っているものを選択。


Machine Type
「micro」を選択

Administrator Email→自分のものを入力
Disk size in GB→30 GB

後はデフォルトのまま「デプロイ」を選択します。


「〜をデプロイしました。」と表示され、


右側にユーザ名、パスワード等が表示されることを確認します。ユーザ名、パスワードは後で使用するのでメモしてください。

Site addressのURLを開くと、

WordPressが使える状態になっています。

3.旧サーバの情報インポート
1で旧サーバからエクスポートした情報をGCP上のサーバにインポートさせます。

先ほどメモした「WordPress administrator username」「WordPress admin password」を使用し、GCP上のWordPressにログインします。

GCP上のWordPressにもプラグイン「All-in-One WP Migration」をインストールします。


「All-in-One WP Migration」メニューから「インポート」を選択します。

旧サーバからダウンロードしたファイルを指定します。


旧サーバの情報で上書きしても大丈夫か聞かれるので「PROCEED(続行)」を選択します。


インポートが終わったら、


旧サーバの情報が引き継がれた事を確認します。
※これ以降WordPressにログインする場合は、旧サーバで使用していたユーザ名、パスワードを使用します。

4.ネットワーク、DNS周りの設定
サーバに割り当てられているIPアドレスを静的なものにして、DNSの向きを旧サーバからGCPに向けます。


GCPのコンソール画面から「VCPネットワーク」「外部IPアドレス」を選択します。

 
タイプが「エフェメラル」になっているので「静的」に変更します。その際にIPアドレスもメモします。

 

Google Domainsページを開き、
「ウェブサイト」を選択し、


「転送」を選択し、メモした「IPアドレス」を入力し、「転送」を選択します。


「ウェブのレコード」をクリアしますか?と表示されたら「OK」を選択します。


転送の設定はとりあえずこうしました。

これで、DNSの向きが新サーバ切り替わります。

ただ、DNSの設定がインターネット上に反映されていく(いわゆる「DNS浸透」)のは数時間ほどかかります。
すぐ確認したいという方は、自PCのDNSサーバの設定を、Googleが公開している「8.8.8.8」に変更すると、

同じGoogle上のためか、すぐ反映されています。





また、ブログのインポート時にURLがドメイン名からIPアドレスに置き換わってしまっているため、
Search RegexというWordpressの置換プラグインで、置換をします。


最後に、WordPressでURLの設定をすれば移行は完了です。

——————-
正直、数日前に急に思い立って移行したので手間取るのかと不安でしたが、
正直なところ、やったことをブログにまとめるほうが時間かかるくらいスムーズにできました。

【さくら→Google移行作戦 前半】ドメイン移管編

今まで、当Blogはさくらインターネットのレンタルサーバで運用していましたが、
今月末で一年毎のサーバ契約期限の連絡がきていたので、せっかくなので乗り換えてみることにしました。

どうせ移転するなら、仕事では触れることのない、IaaSサービスを使ってみようと思い、
いろいろと検討したところ、GoogleのGCPに移行することに決めました。

その下準備として、まずはサーバと同時期にさくらで取得した当ブログのドメイン「aoboshi.org」をGoogleが運営している、Google Domainsへ移行し、メール等の設定をしてみました。

1.Registrant Emailの変更
Google Domainsへ移行するにはRegistrant Email(登録者メールアドレス)の変更が必要なので、変更します。

まず、さくらインターネットの会員メニューに行き、「契約情報」を開きます。


「ドメインメニュー」を選択します。

 
「WHOIS情報」を選択します。


「登録者」欄の「編集」を選択します。


「メールアドレス」欄に自分のメールアドレスを入れ、「変更を行う」を選択します。

その後、whois aoboshi.orgコマンド等でwhois情報を確認し、「Registrant Email」が上記で入れたメールアドレスになったことを確認して、次に進みます。

2.ドメイン転出依頼
次にさくらから転出依頼をします。

さくらインターネットの会員メニューに行き、「契約情報」を開き、「転出」を選択します。


「申請ドメイン名」と「管理者メールアドレス」を埋め、送信します。

3.Googleへドメイン移管
Google Domainへ自分のドメインを移管します。


さくらから上記のようなメールが来ることを確認します。「オースコード」は後で使用するのでメールは消さないでください。
(私は営業時間外の深夜に2を実施し、翌日11時半に上記メールが来たので、平日日中帯では2、3時間くらいで来るのではないかと思います)


Google Domainsページへ移動し、「Googleに移管」を選択します。


ドメインを入力し、「続行」を選択します。


「認証コードを入力」のところに、さくらのメールに記載のあった「オースコード」を入力し、「続行」を選択します。


DNS設定を問われますが、推奨設定のまま「続行」を選択します。


Google Domainsでは、移管時にドメインの一年間の期限延長を求められるため、「精算」を選択します。
(1週間前にさくら側で更新されていたので、2重払いになってしまうのかと不安でしたが、単にもう1年延長されるだけなので、損はなかったです。さくらより340円安いです)


住所氏名電話番号メールアドレス等を入力し、「プライバシー保護を有効にする」が選択されている事を確認し、「続行」を選択します。


ドメイン延長料の支払い方法を聞かれるので、支払い方法を選択し支払います。


「Googleは現在の登録事業者に<ドメイン名>をGoogle に対し開放するよう要求しました。」と画面が出ることを確認します。


株式会社日本レジストリサービス(JPRS)から「レジストラトランスファーアウト意思確認のご案内」との券面のメールが届くまで待ちます。


メール記載のURLを開き、メールが届いたアドレスを入力し「ログイン」します。


「承認」を選択します。


承認されたことを確認します。


Google Domainsページの「マイドメイン」にドメインが表示されていることを確認します。


「メールアドレスが確認されていません」と表示された場合は、確認用のメールが届いているはずなのでメールの指示に従い確認します。

以上で、ドメイン移行は完了です。DNS設定も引き継いでいるので、そのまま使えます。
ただ、今月末でサーバを解約するので、とりあえずGoogle Domains単体でできるメールの設定を行います。
Google Domainsのメール設定は、Google Apps(有料)かGmail等へのメール転送(無料)が選べます。(DNS設定をカスタム設定し、別サーバで運用することも出来ます)


Google Domainsページへ移動し「マイドメイン」の「メールアドレス」を選択します。


「情報や連絡」には今まで使用していた移管したドメイン出使用していたメールアドレスのユーザ名、「受信者のメールアドレス」にはGmail等を指定します。
さくらからDNS設定を引き継いでいるので「MXレコードがカスタマイズされている可能性があります。」と表示されるので「デフォルに戻す」を選択します。

移行したドメインのメールアドレスが「受信者のメールアドレス」で入力したメールアドレスで受信されることを確認します。

以上で、ドメイン移管は完了です、続いて、本ブログ(wordpress)のさくらレンタルサーバからGCP上への移行手順をまとめます。