zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

Apple Developer更新時に不要端末を整理

また今年もApple Developerから

In 30 days, you will no longer have access to membership benefits. Renew your Apple Developer Program membership to keep your apps on the App Store and Mac App Store, submit new apps, utilize advanced app capabilities, and get personal technical support.

が届いた。毎回ぼんやりと更新していて手順化できていなかったので下記にメモを残しておきます。

1)Renew now: https://developer.apple.com/program/renew/index.action

のリンクからApple Developerサイトに[Sign in]する。

2)[Renew Membership]ボタンよりapple.comの支払いフローにて

 Apple Developer Program - Membership for one year
 の金額を確認の上カード情報を入力して更新を進めてください。
 
 例)
 バッグ小計 ¥11,800
 消費税 ¥944
 ご注文合計 ¥12,744

3)登録デバイスのうち不要デバイスを削除する。

なお、登録デバイスの変更はアカウント更新時のみ可能なため
このタイミングで不要デバイスを削除しておく必要があります。

■登録デバイスの台数制限について

https://developer.apple.com/support/account/jp/
>1つのメンバーシップで、1 年間にテスト用およびアドホック配布用に登録できる各デバイスは最大 100 台です。
>メンバーシップの新年度の最初に、チームエージェントまたはチームの管理者は
>「Certificates, Identifiers & Profiles (証明書、ID、プロファイル)」にサインインし、
>表示されているデバイスを削除して、使用できるデバイス数を 100 台に戻すことができます。

更新したのにリセットお知らせ(下のURLにあるようなの)が出ない場合は
www.sachostore.com

Membership DetailsのDevice Reset Dateを確認。
この日を超えたらリセットできるはず。

”Reset your device list before adding any new devices. [GetStarted]”
が表示されていれば、デバイスの整理が可能となる。

[GetStarted]
→Edit your list of devices.
→Select the devices you wish to carry over to this membership year or deselect the devices you want to remove.
 とあるので、削除したいものからチェックを外す。
※事前にdisableにしておいた場合、リストには表示されない(削除対象となる)

→Confirm your devices and reset.
Review and confirm the devices you have selected.
You have the following number of devices available for registration:

例)
Apple TV : 100
Apple Watch : 100
iPad : 90
iPhone : 60
iPod Touch : 90

※それぞれ100台まで登録できるようになったので無理やり減らさなくてもいいかも。

→Your list of registered devices has been updated.

gitlabを8.10.0にupdateしたらメールが飛ばなくなった。

【結論】
理由は不明だがキャッシュディレクトリの所有者がroot:rootになっており、メール送信ジョブを実行しているgitユーザに書き込み権がなかった。所有者をgit:gitにしてしまうことで解決を見た。
参照:https://gitlab.com/gitlab-org/gitlab-ce/issues/17072

chown -R git:git /opt/gitlab/embedded/service/gitlab-rails/tmp/cache/assets/sprockets

【結論に至るまでのログ調査】
cat /var/log/gitlab/gitlab-rails/production.log

Performed ActionMailer::DeliveryJob from Sidekiq(mailers)

→Sidekiqというのがメールを送っているもよう。

cat /var/log/gitlab/sidekiq/current

2016-07-26_11:07:05.38031 2016-07-26T11:07:05.380Z 16609 TID-2phxdk WARN: Errno::EACCES:
 Permission denied @ utime_internal - /opt/gitlab/embedded/service/gitlab-rails/tmp/cache/assets/sprockets/v3.0/B_/B_Ek-epoCB-(略).cache

→権限がない。

【問題が再現する環境について】
gitlab-ceを8.6.7あたりから yum update し続けてきた環境。初期のインストール自体は
https://about.gitlab.com/downloads/#centos6
に従ってそのまま。

※検証のためにまっさらの状態からインストールしたgitlab8.10.1はなぜかメール認証を省略する動作をしていた。これはこれで怪しいのだけど、忘れることにする。

さくらのクラウドの自動バックアップは対象サーバが2台/ゾーンまでしか選べない(2016/07/14現在)

自動バックアップ | さくらのクラウドニュース

2016/07/07から開始されたさくらのクラウドの自動バックアップ、今まで野良スクリプトでどうにかデイリーの1世代バックアップをとっていたので、やった!と思って早速試してみて気づいたのだけど、対象サーバが2台/ゾーンまでしか選べない。
f:id:zuntan02:20160714112125p:plain
これではだめだ……サーバ数多いのにこれは。さくらに問い合わせしたら案の定ベータ版ゆえの制限とのこと。早くバックアップジョブ数増やせるようにしてほしい。

【AWS+ELB+SSL+Wordpres】ELB配下のWordpressでサイト全体をSSL化しようとしてハマった

AWS Certificate ManagerでSSL取ってELB配下のEC2でWordpressをサイト全体SSL(所謂”常時SSL”)で動かそうとしてはまったのでメモ。

【結論】
wp-config.phpの上部に

# for https on
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS'] = 'on';

を追記した上で、Wordpressの管理画面でURLをSSLにしてやる。

□公式ドキュメント
Function Reference/is ssl « WordPress Codex



【原因】
こちらに詳しい。とても分かりやすい解説。
snickerjp.blogspot.jp


曰く
SSLの処理を別サーバーに任せる(SSLオフロード)と『is_ssl関数』が効かない
→function is_ssl() では判定が「Port 443」だったらHTTPS、となっているが、ELB等SSLオフロードのために内部的にPort 80で受けていると、これが動作しない

勉強になりました。。。

追記:/etc/nginx/conf.d/hogefuga.conf

server {
    listen 80;

    server_name hoge.fuga.jp;
    root /var/www/html/hogefugajp/;
    index   index.php index.html index.htm;

    if ($http_x_forwarded_proto != https) {
      return 301 https://$host$request_uri;
    }

    access_log  /var/log/nginx/hoge.fuga.jp.access.log  main;
    error_log   /var/log/nginx/hoge.fuga.jp.error.log   warn;
    charset utf-8;


    # Deny all access to the wp-config.php
    set $deny_f 0;
    if ($request_uri ~* .*\/wp-config\.php$ ){
        set $deny_f 1;
    }
    if ( $deny_f = 1) {
        return 403;
    }


    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

【ATS】ロリポップのSSLがATSに対応できてない模様

★(20170718追記)
internet.watch.impress.co.jp


以下はもう過去の話なのですが枯れ木も山の賑わいで。

ロリポップ(ライトプラン)で独自ドメインSSL証明書(2万円!)を設置した後で
iOSアプリからhttpsリクエストができないという事が判明。

■確認方法
blog.kishikawakatsumi.com

nscurl --ats-diagnostics --verbose https://hoge.fuga.jp

2016-06-30 13:34:49.390 nscurl[11546:612680] CFNetwork SSLHandshake failed (-9824)
2016-06-30 13:34:49.391 nscurl[11546:612680] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
Result : FAIL

問い合わせたら下記の回答があった。

ご連絡いただいた件につきまして、誠に恐れ入りますが
「App Transport Security」について弊社のサーバーは
要件を満たしていない状況でございます。

そのため、本年度中には要件を満たすよう
メンテナンスを予定しております。

現時点で明確な期日をお伝えできませんこと
大変申し訳ございませんが、
何卒ご了承いただけますと幸いでございます。

本年度中かー。

それよりこの証明書どうしたらいいの。

AWS Certificate Manager使ってみた

AWS Certificate Manager、略称ACMならSSLが無料(※)で利用できると聞いたのでやってみた。
よくある質問 - AWS Certificate Manager(簡単に SSL/TLS 証明書を作成、管理、配置) | AWS
※実際はELBの費用を考える必要がある。下記参照されたい。

【2018年追記】

★2017年11月よりメール認証のほかにDNSでの認証も可能となった。
 こっちのほうが楽ちんなので今後はDNS認証で行くことになると思われる。
DNS を使って AWS Certificate Manager の検証を簡単に | Amazon Web Services ブログ
以下はメール認証しかなかった時代の遺物です。。

【メリット】

  • 証明書は一年ごとの自動更新となり、更新は1年ごとのメール承認のみである模様。
  • 証明書自体のの利用は無料。

【デメリット】

  • ACMドメイン認証(DV)のみとなり、組織認証(OV)、実在認証(EV)証明書の発行はされません。
  • 証明書の設置はロードバランサ上となるため、別途ロードバランサの費用が発生する。

→EC2インスタンス1個で賄っている様なサイトの場合、ELBを追加すると最低月額$18くらいの増加を覚悟しないといけない。SSL化”だけ”が目的ならこれまで通りCoreSSLとかで買ってwebサーバで解決、の方が安いかも。
ACMの証明書は「少なくとも 1 つのドメイン」が登録できるので、「*.hogehoge.com」と「*.fugafuga.jp」の両証明書を1台のELBにオフロードさせることができる。複数ドメインを総SSL化するとか言いうときはコストメリットあり。

【感想】

・最初の承認メールさえ受信できればあとはスゲー簡単。
・Route53使ってないとダメかなと思ってたけど外部DNSでも大丈夫だった。
・もう「開発環境のオレオレ証明書」とも、(なんと)年次更新作業ともオサラバな感じ。素晴らしい。

証明書の作成

[AWSマネコン]-[Certificate Manager]-[今すぐ始める]
 ドメインhoge.fuga.jp
 追加の名前 *.hoge.fuga.jp(ワイルドカード証明書も使える)
[確認とリクエスト]-[続行]、で、認証メールが届く

※メールのあて先はFAQにあるように、
WHOISルックアップしてドメインの連絡先情報から登録車・管理者・技術担当者(これはwhois公開代行してるとNG)
・リクエストしたドメイン
 admin@
 administrator@
 hostmaster@
 webmaster@
 postmaster@
 にも送られる。この辺から受信して
”To approve this request, go to Amazon Certificate Approvals at”の次に来るURLでサイトを開き、
[I Approve]で承認したら作成は完了

証明書のELBへの配置

AWS Certificate Manager 証明書はElastic Load Balancing または Amazon CloudFrontで使用できます

ELB新規作成の時

f:id:zuntan02:20160628180332p:plain

ELBで既にSSL証明書を設置していた場合の更新画面

f:id:zuntan02:20160628180339p:plain

証明書の選択、配置は特に迷うことはないはずです。
 
f:id:zuntan02:20160628180535p:plain
証明者発行者がAmazonなのが新鮮。

【MacBookPro+BootCamp6+Windows10】Win7などからWin10にアップグレードしたとき、既にBootCamp4が動作している状態でBootCamp6を上書きインストールしようすると「error」が出てインストールできなかった時の対応ログ

Win7→Win10に上げたついでに、せっかくだからBootCamp6にしよう、と最新版をOSXのBootCampツール経由で取得、Windows10でインストールすると
f:id:zuntan02:20160617133042p:plain
こんな感じでエラー終了してしまった。
ググったところ、以下の方法で解決を見た。

1)トラブルシューティングツールのダウンロードと実行

https://support.microsoft.com/ja-jp/help/17588/fix-problems-that-block-programs-from-being-installed-or-removed
よりトラブルシューティングツール
MicrosoftProgram_Install_and_Uninstall.meta.diagcab
をダウンロードして起動

2)[アンインストール]を選択し、導入済みの「Boot Camp サービス」をアンインストールします

f:id:zuntan02:20160617133101p:plain
削除された模様
f:id:zuntan02:20160617133107p:plain

3)再度BootCamp6のSetup.exeを実行

→途中でインストーラーのエラーが出てくるけど「プログラムを終了します」で進める
→そのままインストーラーの処理は進み、正常に終了、再起動するとバージョンが上がっていることが確認できました。
f:id:zuntan02:20160617133127p:plain

動作はほとんど変わらないので、今普通に動作している人は無理に最新版にする必要はないと思われますが、メモまで。