開発環境用にワイルドカード証明書を発行する

プルリクエストがあるたびに自動デプロイしている環境用の証明書を作った。
ブランチ名がサブサブドメインになっているのでワイルドカード証明書が必要だった。

参考

ハマったこと

↓のせいで2回やりなおした…。

  • SANを入れてなかった。
  • SHA-1で署名してしまっていた。

ファイル

san.cnf

$ cp /System/Library/OpenSSL/openssl.cnf san.cnf

した後、以下を各セクションに追記した。

[ req ]
req_extensions = v3_req

[ usr_cert ]
subjectAltName = @alt_names

[ v3_req ]
subjectAltName = @alt_names

[alt_names]
DNS.1 = sub.example.com
DNS.2 = *.sub.example.com

san.ext

以下の内容を書いた。

subjectAltName=DNS:sub.example.com,DNS:*.sub.example.com

最終的な手順

$ openssl genrsa -aes256 -out ca.key 2048
password
$ openssl req -new -key ca.key -out ca.csr -sha256
$ openssl x509 -days 3650 -in ca.csr -req -signkey ca.key -out ca.crt -sha256

$ mkdir demoCA
$ cd demoCA
$ mkdir private crl certs newcerts
$ echo "01" > serial
$ touch index.txt
$ cd ..

$ openssl genrsa -aes256 -out server.key 2048
$ openssl rsa -in server.key -out np.key
$ openssl req -new -key server.key -out server.csr -config san.cnf -sha256
$ openssl ca -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt -config san.cnf -md sha256 

来年にはLet's Encryptがワイルドカード対応するようだし、あまり出番はなさそう。


環境によってうまくうごかないことがわかった。
やはりLet's Encrypt待つほうが無難か。

GNU Screenでプロジェクト毎に決まったタブを一気に開く

普段開発する時はプロジェクト毎にscreenを立ち上げています。
Railsならvim | git | console | server | specみたいな感じで。

そこで表題の件、tmuxとtmuxinatorを使えば簡単にできるはず。何度か移行を試みたものの結局screenに戻ってきてしまったのでscreenでやる方法をメモっておく。

と言ってもとても泥臭い方法。

以下のような.screenrcをプロジェクトフォルダに置いておいてscreen -c .screenrcで起動するというもの。

source '/path/to/home/.screenrc'

screen

screen -t vim

screen -t git
stuff "git status^M"

screen -t console

screen -t server

screen -t spec

select 1

ツール使わなくてもまぁ十分かなぁということで今のところコレで運用している。


git config --global core.excludesfile ~/.gitignore_global

# ~/.gitignore_global 
.screenrc

を忘れないように。

EdhitaのSwift 4対応

https://github.com/tnantoka/edhita/commit/53a97e55dcf79defe98afd800abd2ee5eac7c491

Swift4 [SE-160 Limiting @objc inference] 概要 - Qiita

基本これの対応のみという感じだった。
migrationだけだとFXFormが動かなくなったので@objcを追加した。

Swift 3 @objc inferenceDefaultにしてクラッシュしなければOK。

1024pxのアイコンをアプリに含めないといけなくなったんだけど、事前警告無しでアップロード時に怒られるのは罠だった。

failed to find Build Tools revision

ReactNativeの案件を触ることがあり、react-native run-androidをおもむろに叩いたところ、

A problem occurred configuring project ':app'.
> A problem occurred configuring project ':react-native-splash-screen'.
   > failed to find Build Tools revision 23.0.3

でこけた。

Androidの仕組みがよくわかっていないが、26が入っていてもダメらしい。メジャーバージョンが違うからだろう。
23.0.1も入っていたが、これは当然古いのでだめというのはわかる。

特定のリビジョンのSDK Build-toolsをコマンドでインストールする - Qiita
androidコマンドで入れれるらしいが、PATHが通ってなくてどこにあるかわからず。

MacにAndroid Studioを入れて、adbを使える状態にする - Qiita
これだ。

$ ~/Library/Android/sdk/tools/android list sdk -a
  13- Android SDK Build-tools, revision 23.0.3

$ ~/Library/Android/sdk/tools/android update sdk -a -u -t 13

でいけた。

Edge/IEで確認環境にログインできなかった

普段保守しているRailsのプロジェクトは、GitHubでプルリクエストを送るたびに自動で確認環境にデプロイする、ということをやっています。

で、この確認環境にIE/Edgeだとログイン出来ないという問題が発生。(正確にはずっとこの問題はあったんだけど、Windowsは各自ローカルで見てね、みたいになっていた)

  • オレオレSSL証明書のせい? → HTTPにしてみても駄目なので違う
  • サブサブドメインが悪い? → そういうわけでもなさそう
  • ログインは https://github.com/flyerhzm/switch_user というGemでやっているけど、関係なさそう

小一時間悩んだ結果…

ホスト名にアンダースコアが含まれているとIEでCookieが保存されない | CreativeStyle

これでした。
あぁ、知ってた…忘れてた……。


http://blog.tokumaru.org/2011/10/cookiedomain.html

IE9 サブドメインにも送信される

というのが今のEdgeでも変わらずこの仕様らしく、追加でハマった。
(セッションIDが重複して送られていた)