WordPress+Nginx+Let’s encryptでSSLサイト評価「A」にしてみた

1. Let’s Encrypt 導入のための前提
2. Let’s Encrypt のクライアントcertbotインストール
3. 証明書の取得
4. Perfect Forward Security (PFS) 2048bitの鍵を生成
5. Nginx conf 設定
6. SSLサイト評価確認
7. Let’s encrypt 自動更新
8. 楽にWordpressをSSL化する

1. Let’s Encrypt 導入のための前提

・ Nginxインストール済み
・ PHP-FPMインストールと設定済み
・ 80、443ポート開放済み
・ WordPress設定済み
・ ドメインがDNSで名前解決可能

2. Let’s Encrypt のクライアントcertbotインストール

$ cd /usr/local/src
$ sudo git clone https://github.com/certbot/certbot
$ cd certbot

certbotのhelpを確認しておく

$ sudo ./certbot-auto --help

3. 証明書の取得

$ sudo ./certbot-auto certonly --webroot -w { ドキュメントルート } -d { ドメイン名 } --email { メールアドレス }

正常に完了すると・・・

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for kishi-r.com
Using the webroot path { ドキュメントルート } for all unmatched domains.
Waiting for verification...
Cleaning up challenges
 
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/{ ドメイン名 }/fullchain.pem. Your cert will
   expire on 2017-09-06. To obtain a new or tweaked version of this
   certificate in the future, simply run certbot-auto again. To
   non-interactively renew *all* of your certificates, run
   "certbot-auto 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

となる。
これで証明書が発行される。場所は「NOTES」へ記載されているとおり、

/etc/letsencrypt/live/{ ドメイン名 }/fullchain.pem

となる。
ここへ後ほど使用する「privkey.pem」なども一緒に同胞されているので、
念のため確認しておく。

4. Perfect Forward Security (PFS) 2048bitの鍵を生成

wiki pedia 引用 (https://ja.wikipedia.org/wiki/Forward_secrecy)
forward secrecy(perfect forward secrecy、略してFSあるいはPFSとも呼ばれる[1]。日本語で前方秘匿性とも[2])は、長期的な鍵対からセッションキーを生成した際に、のちに長期鍵の安全性が破れたとしてもセッションキーの安全性が保たれるという、鍵交換プロトコル(英語版)の持つ性質である。この特性を守るためには、データを暗号化するための鍵から別の鍵を生成してはならないし、そしてデータを暗号化する鍵の素材となる秘密は一度だけの使い捨てにしなければならない。そうすることで、1つの鍵が破れたとしても被害がほかの鍵に及ばないようになる。

$ cd /etc/nginx/ssl
$ sudo openssl dhparam 2048 -out dhparam-2048.pem
$ sudo chown root:root dhparam-2048.pem
$ sudo chmod 600 dhparam-2048.pem

5. Nginx conf 設定

WordPress用にnginxのconfを作成して設定を行う。

$ sudo vim /etc/nginx/conf.d/wordpress.conf

WordPressの設定は各環境へ併せてください。

#
# The default server
#
server {
  listen       443 ssl;
  server_name  { ドメイン名 };
 
  client_max_body_size 20M;
 
  ssl_certificate     /etc/letsencrypt/live/{ lets encrypt設定ドメイン名 }/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/{ lets encrypt設定ドメイン名 }/privkey.pem;
 
  ssl_session_timeout 1d;
 
  ssl_dhparam /etc/nginx/ssl/dhparam-2048.pem;
 
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers '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';
  ssl_prefer_server_ciphers on;
 
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_trusted_certificate /etc/letsencrypt/live/{ lets encrypt設定ドメイン名 }/fullchain.pem;
  resolver 8.8.8.8;
 
  root { wordpress ドキュメントルート };
  index index.php;
 
  location ~* /wp-login\.php|/wp-admin/(^admin-ajax\.php) {
    auth_basic "Restricted";                   # 認証時に表示されるメッセージ
    auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス
    try_files $uri $uri/ @wordpress;
  }
 
  location = /xmlrpc.php {
    deny all;
  }
 
  location / {
    try_files $uri $uri/ @wordpress;
  }
 
  location ~ \.php$ {
    try_files $uri @wordpress;
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME  { wordpress ドキュメントルート }$fastcgi_script_name;
    include fastcgi_params;
  }
 
  location @wordpress {
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME  { wordpress ドキュメントルート }/index.php;
    include fastcgi_params;
  }
 
  include /etc/nginx/default.d/*.conf;
}

完了したらNginxとPHP-FPMを再起動。

systemctl restart php-fpm
systemctl restart nginx

6. SSLサイト評価確認

SSLサイト評価の確認は下記サイトから行います。

https://www.ssllabs.com/ssltest/analyze.html

A評価になっているのでこれで目的は達成

7. Let’s encrypt 自動更新

下記コマンドで更新が行えるか確認

$ sudo /usr/local/src/certbot/certbot-auto renew --post-hook "sudo service nginx restart"
 
Saving debug log to /var/log/letsencrypt/letsencrypt.log
 
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/{ ドメイン名 }.conf
-------------------------------------------------------------------------------
Cert not yet due for renewal
 
The following certs are not due for renewal yet:
  /etc/letsencrypt/live/{ ドメイン名 }/fullchain.pem (skipped)
No renewals were attempted.
No hooks were run.

renewは期限が迫らないうちは実行がスキップされるので、
(skipped)となっているのでとりあえずこれでOK

あとはCronへ登録する

$ sudo su
$ vim /etc/cron.d/letsencrypt

とりあえずは「毎月1日の3:00に更新」で試してみる。

0 3 1 * * root /usr/local/src/certbot/certbot-auto renew --post-hook "sudo service nginx restart"

で保存して完了。

8. 楽にWordpressをSSL化する

Really Simple SSLを使うと楽にSSL化される。
注意点としては「Javascript」で内部リンクや画像のsrcが切り替わるので、それが嫌な場合は使用しない方が良い。
かつ「一般設定」のサイトURLも自動で「http」から「https」へ切り替わるので、こちらも注意しておきたいが楽にやりたい場合はこれで良いかなって感じです。

Neobundleからdein.vimに移行

NeoBundle はオワコンだから dein 使おう!とか、
dein の方がとにかく爆速らしいとか最近よく見るようになったので、
折角だから新しい環境で試してみることにしてみた。

1.インストール

$ mkdir ~/.cache/dein
$ cd ~/.cache/dein
$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh ~/.cache/dein

完了すると下記メッセージが表示される。

Install to "/[ホームディレクトリ]/.cache/dein/repos/github.com/Shougo/dein.vim"...
 
git is /usr/bin/git
 
Begin fetching dein...
Initialized empty Git repository in [ホームディレクトリ]/.cache/dein/repos/github.com/Shougo/dein.vim/.git/
remote: Counting objects: 4302, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 4302 (delta 5), reused 0 (delta 0), pack-reused 4283
Receiving objects: 100% (4302/4302), 842.36 KiB | 591 KiB/s, done.
Resolving deltas: 100% (2470/2470), done.
Done.
 
Please add the following settings for dein to the top of your vimrc (Vim) or init.vim (NeoVim) file:
 
 
"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif
 
" Required:
set runtimepath+=/[ホームディレクトリ]/.cache/dein/repos/github.com/Shougo/dein.vim
 
" Required:
if dein#load_state('/[ホームディレクトリ]/.cache/dein')
  call dein#begin('/[ホームディレクトリ]/.cache/dein')
 
  " Let dein manage dein
  " Required:
  call dein#add('/[ホームディレクトリ]/.cache/dein/repos/github.com/Shougo/dein.vim')
 
  " Add or remove your plugins here:
  call dein#add('Shougo/neosnippet.vim')
  call dein#add('Shougo/neosnippet-snippets')
 
  " You can specify revision/branch/tag.
  call dein#add('Shougo/vimshell', { 'rev': '3787e5' })
 
  " Required:
  call dein#end()
  call dein#save_state()
endif
 
" Required:
filetype plugin indent on
syntax enable
 
" If you want to install not installed plugins on startup.
"if dein#check_install()
"  call dein#install()
"endif
 
"End dein Scripts-------------------------
 
Done.
Complete setup dein!

# /[ホームディレクトリ]は自分のホームディレクトリになっているはずなので、ちゃんとコンソールに表示されたのを参照

Please add the following settings for dein to the top of your vimrc (Vim) or init.vim (NeoVim) file

らしいので、今回は.vimrcの一番上へ追記しておいた。

尚、

" If you want to install not installed plugins on startup.
"if dein#check_install()
"  call dein#install()
"endif

この部分のコメントアウトは外しておく。

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

こうなるね。

このあとに、vimを起動するとインストール開始する。

あとは必要なプラグインをインストールする。
さっき追記した中にある、

” Add or remove your plugins here:

ここへ追記していく。

取り急ぎ使うのを追記してみた。

" Add or remove your plugins here:
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
 
call dein#add('thinca/vim-quickrun')
call dein#add('slim-template/vim-slim')
call dein#add('hail2u/vim-css3-syntax')
call dein#add('kchmck/vim-coffee-script')
call dein#add('mattn/jscomplete-vim')
call dein#add('othree/html5.vim')
call dein#add('vim-ruby/vim-ruby')
call dein#add('tpope/vim-rails')
call dein#add('groenewege/vim-less')
call dein#add('lilydjwg/colorizer')

追記後に再度、.vimrcでもいいからvimを立ち上げると、コンソールに、

[dein] Not installed plugins: ['vim-quickrun', 'vim-css3-syntax', 'vim-ruby', 'vim-rails', 'vim-less', 'colorizer', 'vim-slim', 'html5.vim' ....

のように追記したものがインストールされていないと出てインストールが開始される。

完了すると、

[dein] Done: (2017/03/01 12:41:26)
Press ENTER or type command to continue

のようにDoneと出るがエラーが出てると、Errorって出るからちゃんと確認する。

「iPhone 6sが突然シャットダウンする問題に対するプログラム」で実際にGenius Barで無償交換していただいた日数と手順

program

発表されたので実際に事務所から歩いて行ける「表参道店」にて、「Genius Bar」を予約して交換してきました。

前提として、

・iPhone6sを購入したのは「26年9月15日」
・2ヶ月前くらいから「20%〜30%」で突然落ちる。
ここ最近、酷い場合は「50%」で落ちる
・「iPhone 6s が突然シャットダウンする問題に対するプログラム
で確認済み
・「Genius Bar」をネットから予約(備考などには特に何も記載なし)
・「Genius Bar」へは予約日に直接訪店

となります。

まず、
iPhone 6s が突然シャットダウンする問題に対するプログラム
にて、iPhone6sの様子がおかしいから試してみようと思ったのがきっかけ。
シリアルナンバーを入力して送信すると・・・

img_1669

こんな感じで「〜適用対象です。」とか出てたのでやっぱりかーと。
交換するのとか、店に行くのも嫌だしなーと思ってたけど、50%で落ちる場合があり、通常生活時にも支障があるため、急いで「Genius Bar」を「ネット」から予約しました。

genius

予約した日にちは「12/2(金)」で最短で受付してくれるのが「12/6(火曜日)」でした。

# 特に備考欄へ何も書かずに予約したので、
前もって対象プログラムについてとか、
キャプチャを送っておいた方が良かったのかな?と思ったけど、
後で解ったがあまり意味が無かったみたいでした。

予約日は直接、「表参道店」へ向ったところ、
結構な人達が待たされていたので、
予約時間を少し過ぎた辺りに席へ案内されました。

担当者が席に来て、症状などを説明すると、

・iPhoneを探すを「OFF」にしてください
・診断プログラムで確認します(iPadで行ってました)

などをしつつ、諸々確認していきます。
確認が取れると、交換するための説明を受けます。

その場でバッテリー交換をすぐにでも無いけど、やってくれると思ってたけど、予想と違う答えがw

このプログラム用のバッテリーは、通常と別らしく、在庫が店舗に無い。そのため、あいまいだが2週間くらいで、店舗へ届くので、届き次第、メールにて連絡します。とのことでした。(また来ないといけないじゃん・・・)

そういう事であればしょうが無く、了承し、書類へサインなどを書いていきます。

その後、メールへ、「Genius Bar サービス見積もり書」というが届きます。

img_1819

もちろん、適用内のためバッテリー交換自体は「無償」となります。

その後、「2週間ほど掛かる」と言われていたので、あまり考えないようにしていたところ、

fullsizerender

到着したのは、「12/12(月曜日)」となるため、「約1週間」くらいで連絡がきた 😀
聞いていた2週間より全然早くてビックリしたが、連絡が来てすぐに店舗へ向かいました。

店舗でまた担当の方に説明をし、「パスコードを解除」した後、iPhone6sを預けます。交換には「約1時間30分〜2時間」掛かるので、xx時くらいに取りに来て下さい。と言われます。

ちょっと時間が掛かりすぎるので、
事務所へ戻り、帰宅がてら取りに行きました。

取りに行くと、すぐに店舗の奥からiPhone6sを持ってきてくれます。
一応、薄い発砲スチロールに包まれて、渡されるので、自分のiPhone6sなのか確認されるのと、サインをして完了となります。

その後、Appleからメールが来ます。
内容は「Genius Bar 修理確認書」でした。

img_1820

まとめ

・Genius Barネット予約: 12/2(金)
・Genius Bar受付: 12/6(火)
・バッテリーが届いた連絡: 12/12(月)
・バッテリー交換&完了: 12/12(月)

約10日間」で「バッテリー交換が完了」しました。

# 配送交換の場合は「Gigazineさん」でまとまってます。
こちらの方が早いが手元からiPhoneが離れてしまうので仕事で使用している人とかは向いていないかもー

ただし、次の日にiOS10.2が出たので、またどうなるか、少しビクビクしつつ経過を観察中です。

Mac(OS X El Capitan)にてbrew updateしたら「fatal: cannot create directory at ‘.github’: Permission denied」

「OS X El Capitan」にしたら元々インストールしていた、
homebrewで更新しようとしたらエラーが出たのでメモとして。

$ brew update
warning: unable to unlink CONTRIBUTING.md: Permission denied
warning: unable to unlink SUPPORTERS.md: Permission denied
fatal: cannot create directory at '.github': Permission denied
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master
$ sudo chown -R $USER:admin /usr/local
$ cd /usr/local/
$ git reset --hard origin/master
HEAD is now at 53c5089 CoreTap#install: fix clone target setting
$ brew update
remote: Counting objects: 456, done.
remote: Compressing objects: 100% (413/413), done.
remote: Total 456 (delta 26), reused 335 (delta 17), pack-reused 0
Receiving objects: 100% (456/456), 706.29 KiB | 276.00 KiB/s, done.
Resolving deltas: 100% (26/26), done.
From https://github.com/Homebrew/brew
 + 53c5089...d7aa0c0 master     -> origin/master  (forced update)
HEAD is now at d7aa0c0 scm/git: prevent exec bomb with 'env :userpaths'
==> Tapping homebrew/core
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-core'...
remote: Counting objects: 3656, done.
remote: Compressing objects: 100% (3539/3539), done.
remote: Total 3656 (delta 14), reused 1569 (delta 5), pack-reused 0
Receiving objects: 100% (3656/3656), 2.70 MiB | 431.00 KiB/s, done.
Resolving deltas: 100% (14/14), done.
Checking connectivity... done.
Tapped 3531 formulae (3,682 files, 8.5M)
Updated 1 tap (homebrew/dupes).
==> Updated Formulae
homebrew/dupes/ed                      homebrew/dupes/gzip                    homebrew/dupes/nano                    homebrew/dupes/openssh               
homebrew/dupes/file-formula            homebrew/dupes/krb5                    homebrew/dupes/ncurses                 homebrew/dupes/rsync                 
homebrew/dupes/grep                    homebrew/dupes/lapack                  homebrew/dupes/openldap                homebrew/dupes/whois                 
==> Deleted Formulae
homebrew/dupes/gdb

ついでにAnsibleが古かったので更新しておく。

$ brew upgrade ansible
==> Upgrading 1 outdated package, with result:
ansible 2.0.1.0
==> Upgrading ansible
==> Installing dependencies for ansible: libyaml, openssl
==> Installing ansible dependency: libyaml
==> Downloading https://homebrew.bintray.com/bottles/libyaml-0.1.6_1.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libyaml-0.1.6_1.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/libyaml/0.1.6_1: 8 files, 312.8K
==> Installing ansible dependency: openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2g.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring openssl-1.0.2g.el_capitan.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl/certs
 
and run
  /usr/local/opt/openssl/bin/c_rehash
 
This formula is keg-only, which means it was not symlinked into /usr/local.
 
Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries
 
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:
 
    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include
 
==> Summary
🍺  /usr/local/Cellar/openssl/1.0.2g: 1,678 files, 12.0M
==> Installing ansible
==> Downloading https://homebrew.bintray.com/bottles/ansible-2.0.1.0.el_capitan.bottle.2.tar.gz
######################################################################## 100.0%
==> Pouring ansible-2.0.1.0.el_capitan.bottle.2.tar.gz
==> Caveats
Homebrew writes wrapper scripts that set PYTHONPATH in ansible's
execution environment, which is inherited by Python scripts invoked
by ansible. If this causes problems, you can modify your playbooks
to invoke python with -E, which causes python to ignore PYTHONPATH.
==> Summary
🍺  /usr/local/Cellar/ansible/2.0.1.0: 8,167 files, 84.8M

2016年2月22日現在のSHAKE SHACK(シェイクシャック)平日お昼の待ち時間

IMG_5713

イッテキマシタ。

今だに人気のSHAKE SHACK(シェイクシャック)さん 🙂

話の流れでお昼に食べようという話になり、一人で平日のお昼まっただなか「12時00分」から行列へ参戦。

自分の中では、行列を見るまでは、
「平日だしもう結構時間経ってるし、そんな並んでないから、一人で買ってきますよ!」
ってノリです。

行列の長さはお店の角にある「いちょうの木」から「明治神宮外苑」へ向かって「6本目」のところ。

12時00分」ここから長い長い戦いの「開始」です。

IMG_5716

上記のような感じでカップルやら女性やら女性やら男性やら女性やら・・・ってほぼ女性ばっかりです。

こっから一人っきりなので、トイレも行けずひたすら我慢してひたすら並びます。

丁度、お店が見えてくると少し安心し、さらにお店の前に来ると一人でやっとここまできた・・・と心の中で叫んでます。

IMG_5715

いちょうの木6本目」から「お店の真ん前」に来た時間は、

12時58分」でした。一時間も経ってる・・・。回転率悪いな・・・。

テイクアウトの人なんかほとんど居なくて、みんなお店で食べてるし・・・。

テイクアウトは別ルートで注文させてくれよー 🙁

IMG_5717

まだまだお店の入り口まで遠い中、途中に緑色の自転車がありました。

思わずぱちりと撮っちゃうよね。

IMG_5720

tokyobikeとコラボで作ってるんっすねー。
そうこうしてるとすぐに入り口手前までガシガシ進んでいきます。
さっきの正面から写真を撮ってからお店の階段上まで行くのに「約15分」で、
時間が「13時14分」です。
ここら辺になると早いな。

IMG_5723

遠目からだと20分って書いてあると思ってた看板。
m(メートル)」かよ!
時間わからねぇーよ!って心の中で突っ込むよね。

IMG_5724

その先の入り口に入ってびっくり。
中はそんなに混んでいないというからくり。
単純にオペレーションが悪いのか?レジが3台しかないからこの行列なのか?
どうなんだろう!

この光景を見た時間が「13時27分」でした。
ここから注文開始したのが「13時35分」です。

注文は3台レジがあるので空いたところから呼ばれます。
注文が完了すると、呼び出し用のアイテムとレシートを渡されます。

IMG_5726

注文が完了した時間がレシートに記載されてます。

すげー並んだので、ハンバーガーだけだとちょっと悔しいので、
ボールぺーンやらクッキーなんかもお土産がてらに購入。

やっぱりレシート見ると値段に驚愕するな。

ここから「約10分」ほど待たされます。

商品を受け取ってお店を出ることが出来た時間が「13時45分」ですね。

IMG_5729

気を付けないといけないのが結構注文数が多い場合は、
一人で持って帰るのが大変な仕様の袋です。
それも中がそのまま入れてるだけなので、中でめっちゃ暴れます。

IMG_5730

IMG_5732

これテイクアウト用にちゃんと包装したりした方がいいと思うんだけど・・・。

IMG_5733

IMG_5734

自分が食べたのはベーシックな「ShackBurger(シャックバーガー)」と「CheeseFries」です。
バーガーのお味の方は「うんまい!」よ 😀
バーガーキングのワッパーが好きなら更に好きになるやつですね。
ポテトはあんまり好きじゃ無かった・・・固い・・・味が濃すぎる・・・。

バーガーはもう一回食べてみたいし、他のマッシュルームが入ってるのも食べたいな 🙂

でも並ぶのがツライ・・・。

・待ち時間の結果

# 前提として平日のお昼でいちょうの木6本くらいまで並んでる場合

スタート:12時00分
お店入り口:12時58分
お店の中:13時27分
注文開始:13時35分
商品受け取り:13時45分

合計:1時間45分

という結果になりました。