HAGLOFSのROC SPRIT JACKETが日本では高すぎるので、個人輸入したメモ
この記事を参考にするのは自己責任で。正確性を保証するものではありません
デンマークから通販する機会はあまりなさそうなので、他に迷っている方の助けになれればと思ってメモ
Target
ハードコアに山を楽しむ人の、ハードコアな Roc スピリットジャケット! 3L GORE-TEX® Proを使用しクリーンなラインと究極の耐久性を兼ね備えた、季節を問わず活躍する機能満載のフード付きジャケット。(http://www.haglofs.com/jp/ja/Jackets/ROC-SPIRIT-JACKET-MEN/p/602656.2UY より引用)
「お前山登りしないだろ」というツッコミは無しで、釣り&通勤での利用で見た目が気に入って欲しくなったやつです。
日本では高すぎる&在庫が無い
- 楽天 -
\78,980
かつこの色は在庫なし。セール期間に\55,944
があったが在庫なし - Amazon -
\67,000 ~ 79,900
かつこの色は在庫なし - ヤフーショッピング - 同上
- 怪しい日本語の - 5万円台で過去に売っていたようだが、在庫なし
Backpacking United を検討
BACKPACKING-united(バックパッキング-ユナイテッド)はドイツにあるアウトドア専門の通販サイトです。(http://www.outdoorgear.blue/より引用)
Haglofs Roc Spirit Jacket Men Hurricane Blue - jp
が、在庫なし。
Backcountry.com
アメリカユタ州ソルトレイクにある。大手のアウトドア、スポーツのネットショップ専門店。 (http://www.kaigaituhan.com/より引用)
Haglöfs Roc Spirit Jacket - Men's | Backcountry.com
在庫ある!が、アメリカのため(?) メーカーの掛けている国外への輸出制限にひっかかり、日本国への直接発送はできない
ため、malltailなどの輸入代行業者を利用する必要がある。
結局 friluftslageret.dk
で購入
デンマークのアウトドアショップ
Friluftslageret - Specialbutik til friluftsliv og en aktiv hverdag
- 商品 :
1.599,20DKK
- 送料 :
248DKK
- 計 :
1.847,20DKK
圧倒的に安い&日本に直接発送してくれる
というわけで、このサイトから日本へ個人輸入した方をネットで調べて情報を集め、問題なさそうという判断にいたり、ポチる。
- 英語が通じるので、気になることはメールで問合せましょう。すぐ返してくれました
- デンマークの数値表記は
ドットが桁区切り
カンマが小数点
らしいです
不正利用が怖いので、決済金額だけを口座に入れたVISAデビットカードを使うと良さそうです。
ドキドキしながら決済を済ませると、注文完了メールがきます。時差で多少ずれますが、おそらくその日のうちに発送完了メールがきます。
ヤマトの追跡っぽい画面で、状況を確認できます。
Locationがずっとデンマークのまま The shipment item has arrived at the country of destination.
というステータスになって「????」となってました。
税関通過後 The shipment item has arrived at the distribution terminal
になって半日くらいで手元にとどきました。
ぼくの場合郵便局が配達してきてくれて、 玄関口で関税の支払い をし、受け取りました。
関税の計算について
今回の場合 個人利用を目的
として 20万円以下
という条件で税金計算が行われます。以下のようになります。
(商品代金は 1.599,20DKK = \27,000
で計算)
- 関税 - 27,000 * 0.6 * 0.1 = \1,620 (個人利用目的じの軽減措置として商品代金の60%が課税対象となり、衣類の簡易税率は10%)
- 消費税 - 31,000 * 0.6 * 0.063 = \1,171(消費税は送料込みの金額にかかるっぽい?税率も6.3%でよくわからん)
- 地方消費税 - 数百円(これも計算がよくわからん)
細かい話はこの辺参照してください 関税・消費税・諸税について(輸入時に課税されるもの)|個人輸入代行、海外発送サービス【malltail】公式サイト
大した金額でもないので、多く見積もってもお店に支払った合計の10%くらい余計にとられる、くらいの認識で良さそう。
まとめ
- 調べて使えば海外通販はお得(およそ日本の半額で買えた)
- デンマーク→福岡で5日間くらいで届く
- 関税がかかるので注意
- 国によって数字の区切り文字が違う
何かの参考になれば。
コピペでssl_ciphers(暗号化スイート)の指定をやってたけど、もうちょっと調べてみた
SSL Server Testで A+
判定を得るために、Generate Mozilla Security Recommended Web Server Configuration Files で生成した設定を一部利用しています。
その中でも特に目につくのが↓のなっがいやつでした。
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
そもそも暗号化スイートとは?
鍵交換方式
& 鍵認証のアルゴリズム
& 共通鍵暗号アルゴリズム
& 利用するハッシュ関数
を組み合わせたものを、 暗号化スイート
と呼ぶそうです。
ssl_ciphersで先頭にきている一番のおすすめ(?) ECDHE-RSA-AES128-GCM-SHA256
を例にとってみます。
鍵交換方式(Kx)に ECDHE(楕円曲線ディフィー・ヘルマン鍵共有 - Wikipedia - Elliptic curve Diffie–Hellman key exchange)を使う
Kxは「安全でない経路で結ばれたサーバとクライアント間で共通鍵を安全に交換する」という目的を達するための仕組み。公開鍵暗号の鍵交換を担う
サーバ認証のアルゴリズム(Au)にRSA 実際に通信する相手が、証明書の持ち主か認証するための仕組み。
公開鍵暗号の署名を担う
暗号化の方法(Enc)に
AES&GCM
共通鍵を使用して暗号化通信する際の方式。共通鍵を交換し終わったあと実際に情報をやり取りする際の暗号化・復号化を担う
で、いいのかな。KxとAuの役割の違いがよくわからんくなった。
結論
最新の 鍵交換方式
& 鍵認証のアルゴリズム
& 共通鍵暗号アルゴリズム
& 利用するハッシュ関数
を全部追っかけとかないといこうとすると辛いなーと思った。
何も考えずにコピペしない、という前提のもと Generate Mozilla Security Recommended Web Server Configuration Files などを参考に、内容を理解し、自身の環境に適用できるか検討したうえで選択する、というのが現実的なところか…
ちなみに
ssl_ciphers
で完璧なものを指定しておけば安心!というわけではない(最近おしえてもらった)
ssl_prefer_server_ciphers on;
でサーバ側の暗号化スイート設定を優先するようにしておかないと、クライアント側の設定が利用されて辛いssl_session_tickets off;
デフォは有効なので、使わないのであれば明示的にoff
にする。(クラスタ構成にする場合は、複数台のnginxでsession cacheを共有するため有効にし、定期的にkeyの更新を行わせる必要がある。nginx.confssl_session_ticket_key /etc/nginx/ticket.key;
とファイルを明示し、cronなどでopenssl rand 48 > /etc/nginx/tickets.key
で定期更新し、各nginxで同じものを使う。ssl_session_timeout 5m;
有効期限が短ければ短いほど、安全なはず。サーバ負荷と相談しつつ設定- nginx外のそもそものサーバ設定。ミドルウェアの設定を頑張ってもfirewallが全空きでした!じゃ辛い
とても良い記事 qiita.com
Let's Encryptを使用したkame.photosのSSL Server Test結果をA+にした
参考
- 細かすぎて伝わらないSSL/TLS - Yahoo! JAPAN Tech Blog
- Generate Mozilla Security Recommended Web Server Configuration Files
- SSL Server Test: kame.photos (Powered by Qualys SSL Labs)
- NginxでSSLの評価をA+にする手順 - 9mのパソコン日記
- 我々はどのようにして安全なHTTPS通信を提供すれば良いか - Qiita
http { 〜略〜 # HTTP Strict Transport Security の指定。サブドメインにも適用 add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;'; 〜略〜 server { listen 443 ssl http2; # プロトコルはTLS1.2に限定 ssl_protocols TLSv1.2; # TLSセッションキャッシュ有効期限 ssl_session_timeout 5m; # TLSセッションキャッシュを全ワーカプロセスで共有。サイズは50MB ssl_session_cache shared:SSL:50m; # DH鍵交換のパラメータファイルの指定「openssl dhparam 2048 -out dhparam.pem」で生成 ssl_dhparam /etc/nginx/dhparam.pem; # 暗号化スイート指定(MozillaConfigGenerator参照) ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK'; # サーバサイドの暗号化スイート指定を優先 ssl_prefer_server_ciphers on; # TLSセッションチケットはOFF - TLSセッションキャッシュはsession resumptionを使う ssl_session_tickets off; # OCSP Staplingを有効化にする ssl_stapling on; ssl_stapling_verify on; # 認証局の証明書 ssl_trusted_certificate /etc/letsencrypt/live/kame.photos/ce-cert; ssl_certificate /etc/letsencrypt/live/kame.photos/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kame.photos/privkey.pem; 〜略〜
いろいろと気にするところがあるのだな〜とおもた
cclogconv(IPアドレスから国名を取得するツール)を使ってみた
???
[PMAC226S ~/src/github.com/rhykw/cclogconv]$ echo "111.169.213.70" | cclogconv --data ./GeoLite2-Country.mmdb JP 111.169.213.70
とりあえずtmp直下にDBはおくように設定してビルド
[PMAC226S ~/src/github.com/rhykw/cclogconv]$ git diff diff --git a/cclogconv.go b/cclogconv.go index e4bf4da..883fc76 100644 --- a/cclogconv.go +++ b/cclogconv.go @@ -15,7 +15,7 @@ import ( func main() { var ( - optMmdbFilePath = flag.String("data", "/usr/share/GeoIP2/GeoLite2-Country.mmdb", "GeoIP2 Database Filename") + optMmdbFilePath = flag.String("data", "/tmp/GeoLite2-Country.mmdb", "GeoIP2 Database Filename") selectCc = flag.String("cc", "", "Only displays line including this country's ip") nFlag = flag.Bool("n", false, "Not adding country code") vFlag = flag.Bool("v", false, "Reverse condition for cc option")
cd /tmp curl -O http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz gunzip GeoLite2-Country.mmdb.gz
準備OK
使う
- 未使用時
[PMAC226S ~/src/github.com/rhykw/cclogconv]$ tail -10 access.log 66.249.71.213 - - [29/Jan/2016:21:47:09 +0900] "GET /feed/ HTTP/1.1" 404 168 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 17.142.156.142 - - [29/Jan/2016:21:53:00 +0900] "GET / HTTP/1.1" 200 15817 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1; +http://www.apple.com/go/applebot)" 66.249.71.213 - - [29/Jan/2016:21:56:09 +0900] "GET /%E3%81%8B%E3%82%81%E3%83%95%E3%83%BC%E3%83%89%E5%A5%BD%E3%81%8D%E4%B8%89%E4%BA%BA%E8%A1%86/ HTTP/1.1" 404 168 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 157.55.39.71 - - [29/Jan/2016:21:56:21 +0900] "GET /robots.txt HTTP/1.1" 404 168 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 157.55.39.71 - - [29/Jan/2016:21:56:26 +0900] "GET / HTTP/1.1" 200 15828 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 185.130.5.244 - - [29/Jan/2016:22:20:26 +0900] "GET /phpmyadmin/scripts/setup.php HTTP/1.0" 404 16 "-" "-" 66.249.71.252 - - [29/Jan/2016:22:26:35 +0900] "GET /?cat=11 HTTP/1.1" 200 15992 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 157.55.39.71 - - [29/Jan/2016:22:59:20 +0900] "GET /%e3%82%ad%e3%83%9c%e3%82%b75/ HTTP/1.1" 404 168 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 66.249.71.234 - - [29/Jan/2016:23:14:35 +0900] "GET /?m=201509 HTTP/1.1" 200 16072 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 184.105.139.68 - - [29/Jan/2016:23:22:49 +0900] "GET / HTTP/1.1" 200 15828 "-" "-"
- かませてみる
[PMAC226S ~/src/github.com/rhykw/cclogconv]$ tail -10 access.log | ./cclogconv US 66.249.71.213 - - [29/Jan/2016:21:47:09 +0900] "GET /feed/ HTTP/1.1" 404 168 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" US 17.142.156.142 - - [29/Jan/2016:21:53:00 +0900] "GET / HTTP/1.1" 200 15817 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1; +http://www.apple.com/go/applebot)" US 66.249.71.213 - - [29/Jan/2016:21:56:09 +0900] "GET /%E3%81%8B%E3%82%81%E3%83%95%E3%83%BC%E3%83%89%E5%A5%BD%E3%81%8D%E4%B8%89%E4%BA%BA%E8%A1%86/ HTTP/1.1" 404 168 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" US 157.55.39.71 - - [29/Jan/2016:21:56:21 +0900] "GET /robots.txt HTTP/1.1" 404 168 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" US 157.55.39.71 - - [29/Jan/2016:21:56:26 +0900] "GET / HTTP/1.1" 200 15828 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" LT 185.130.5.244 - - [29/Jan/2016:22:20:26 +0900] "GET /phpmyadmin/scripts/setup.php HTTP/1.0" 404 16 "-" "-" US 66.249.71.252 - - [29/Jan/2016:22:26:35 +0900] "GET /?cat=11 HTTP/1.1" 200 15992 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" US 157.55.39.71 - - [29/Jan/2016:22:59:20 +0900] "GET /%e3%82%ad%e3%83%9c%e3%82%b75/ HTTP/1.1" 404 168 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" US 66.249.71.234 - - [29/Jan/2016:23:14:35 +0900] "GET /?m=201509 HTTP/1.1" 200 16072 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" US 184.105.139.68 - - [29/Jan/2016:23:22:49 +0900] "GET / HTTP/1.1" 200 15828 "-" "-"
使いみち
たとえば、便利だと思うのが中国からきてるIPをまるっと弾きたいとき
[PMAC226S ~/src/github.com/rhykw/cclogconv]$ cat access.log | ./cclogconv | grep '^CN' | awk '{print $2}' | sort | uniq 101.254.204.65 171.214.248.34 180.76.15.13 180.76.15.135 180.76.15.136 180.76.15.137 180.76.15.141 180.76.15.143 180.76.15.147 180.76.15.155 180.76.15.157 180.76.15.162 180.76.15.17 180.76.15.19 180.76.15.22 180.76.15.31 180.76.15.6 180.97.106.161 202.46.50.12 222.191.236.114
かんたんに取り出せる。
シェルスクリプトで巨大な文字列とのマッチング処理をするとき、変数格納よりもファイル参照したほうが速かった
この前必要があってお粗末なスクリプトを書いた時、速度に大きな差があったので気になった。
なんとなく変数に持ったほうが、試行回数が増えるほど早くなるのかとおもってた
宣伝
今回の環境
KagoyaVPS 最小構成CentOS6.5 日毎課金なので特にこだわりなければ安くあがっておすすめです。ちょっと触ってすぐ削除するような使い方
[root@v8794 work]# cat /proc/cpuinfo | grep processor processor : 0 processor : 1 processor : 2 [root@v8794 work]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@v8794 work]# free total used free shared buffers cached Mem: 2097152 445288 1651864 0 0 424992 -/+ buffers/cache: 20296 2076856 Swap: 4194304 21420 417288
使用するファイル
- 巨大テキスト 以下で取得したデータを変換して作成 私立PDD図書館/百科辞書
# ファイルに対してgrep [root@v8794 work]# cat file.sh #! /bin/sh cat << EOF | while read txt `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n $2 | sort | uniq` EOF do grep ${txt} $1 if [ $? -eq 0 ]; then echo "true" else echo "false" fi done # 変数に格納したあとgrep [root@v8794 work]# cat val.sh #! /bin/sh testtxt=`cat $1` cat << EOF | while read txt `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n $2 | sort | uniq` EOF do echo $testtxt | grep ${txt} if [ $? -eq 0 ]; then echo "true" else echo "false" fi done
ファイル観たほうが速い
[root@v8794 work]# time ./file.sh test.txt 10 false false false false false false false false false false real 0m0.179s user 0m0.087s sys 0m0.085s [root@v8794 work]# time ./val.sh test.txt 10 false false false false false false false false false false real 0m51.921s user 0m45.767s sys 0m7.232s
ちなみに、小さいファイルにしたら逆転するのかと思ったら、そんなことなかった
[root@v8794 work]# ll test2.txt -rw-r--r-- 1 root root 17000 1月 23 20:48 2016 test2.txt [root@v8794 work]# time ./file.sh test2.txt 10 false false false false false false false false false false real 0m0.019s user 0m0.002s sys 0m0.007s [root@v8794 work]# time ./val.sh test2.txt 10 false false false false false false false false false false real 0m0.049s user 0m0.032s sys 0m0.008s [root@v8794 work]
あれ?これって当たり前の話??? もしかして恥ずかしい疑問なのかもしれない