JWTについて
JWS/JWE/JWT/IDトークンってなに?
https://qiita.com/TakahikoKawasaki/items/1c1bcf24b46ebd2030f5 https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html
- 直列化方式として2つある
- それぞれ JSON 形式とコンパクト形式がある。
- JWT (JSON Web Token) は JWS か JWE を使用する
- いずれにしてもコンパクト形式を使用する。
- IDトークンとは?
JWS署名について
https://www.engineer-memo.net/20180716-4614
- 広義のjwtは署名付きのjson全体のこと
- 狭義のjwtはpayloadのこと
- JWTでは、Claim (Keyと値=パラメーターの事)として、基本的な Key の値が予約されている。
- 例えば、"iss"は、"Issuer Claim(発行者)"、"exp"は、"Expiration Time Claim(有効期限)" として予約されている。
- 独自の値を追加する事もできる。
- 「JWS署名」とは
- 「JOSE ヘッダー」と、「JWSペイロード」を「・」でつないだ値を入力にして、 HMAC SHA-256 で署名を作り、BASE64URL に変換したもの。
- JWS Compact Serialization
- 「JOSE ヘッダー」「JWSペイロード」「JWS署名」を「.」でつなぐ
- HMAC(共通鍵暗号方式)
- RSAではなくこっち使うのが一般的らしい。
HMACについて
https://www.infraexpert.com/study/ipsec4.html - 秘密鍵は文字列の並びであればなんでもよさそう。
RS256,HS256とは
- RS256: SHA-256を持つRSA署名 (公開鍵)
- HS256: HMAC with SHA256 (共通鍵)
jwa: JSON Web Algorithm 暗号化アルゴリズム
npmライブラリで型情報を提供するには
https://typescriptbook.jp/reference/declaration-file に書いてあった。
Phaserの場合
Phaserの場合は「JavaScriptで書かれたパッケージだが.d.tsファイルを同梱している」に該当する。
型定義ファイルの場所はpackage.jsonに記載がある。 https://github.com/photonstorm/phaser/blob/v3.55.2/package.json#L12
"types": "./types/phaser.d.ts",
Phaserの場合は、型生成ツールを使って作成しているようだ。 https://github.com/photonstorm/phaser/tree/5c8ecbcf999e6f328d21884e877c9e5935d2d350/scripts/tsgen
libmysqlclient.so.18: cannot open shared object file
rails s
で libmysqlclient.so ない言われたときの調査メモ
こんなエラーがでる
libmysqlclient.so.18: cannot open shared object file: No such file or directory - /path/to/mysql2.so (LoadError)
libmysqlclientがインストールされているか確認する
# ライブラリ名を確認する apt search libmysqlclient # ライブラリの情報を確認する apt show libmysqlclient-dev # どのパスにインストールされているか確認する dpkg -L libmysqlclient-dev
共有ライブラリのパスが通っているか
以下に探索パスが登録されている
- /etc/ld.so.conf
- /etc/ld.so.conf.d/*
参考: https://linuc.org/study/knowledge/545/
リンクされているか
ldd /path/to/mysql2.so # 略 libmysqlclient.so.18 => not found # おっとー # 略
vendor/bundle以下に古いファイルが残っていて、何かおかしいことになってたのかも。 vendor/bundle以下を削除して、bundle install しなおしたら復帰しました。
crypt関数とかglibcとか
WordPressのDBに保存されているハッシュ化されたパスワードの値が気になったので調べた話 を読む過程で crypt関数
ってなんだっけ?となったので、調べたことメモ。
PHPのcrypt関数
- 不可逆のハッシュ値を生成する
- C標準ライブラリのcrypt関数に実装依存する
- 使用可能なハッシュ方式は
phpinfo()
のHashing Engines
の値から確認できる - https://www.php.net/manual/ja/function.crypt.php
Rubyのcrypt関数
- 不可逆のハッシュ値を生成する
- C標準ライブラリのcrypt関数に実装依存する
- Ruby 2.6 から非推奨になったため、引き続き必要な場合は string-crypt gem を使用する
- https://docs.ruby-lang.org/ja/latest/method/String/i/crypt.html
crypt関数
- C言語の標準ライブラリに含まれる関数
- 平文とsalt値を与えることで不可逆のハッシュ値を生成する
- アルゴリズム
- 追加の暗号化アルゴリズムについて
- http://linuxjm.osdn.jp/html/LDP_man-pages/man3/crypt.3.html
manページとは
- UNIXに関するコマンド,システムコール,ライブラリ関数などのマニュアル
- https://linuxjm.osdn.jp/index.html
- https://ja.wikipedia.org/wiki/Man%E3%83%9A%E3%83%BC%E3%82%B8
標準ライブラリ
- 標準ライブラリの名前は「libc」
- GNUプロジェクトによる実装として「glic」がある
バージョンは以下で確認できる
# yumコマンドを使う場合 yum list installed | grep glibc # rpmコマンドを使う場合 rpm -q glibc
リンク
- libcなどのライブラリは、動的リンクか静的リンクされてプログラムから使用される
- 静的リンク
- コンパイル時にライブラリごと実行ファイルに取り込む方式
- 動的リンク
指定ファイルの動的リンク先を確認する
# linux ldd /usr/bin/php # mac otool -L /usr/bin/php
git submodule
# submoduleの追加 git submodule add git@github.com:kinosuke01/xxxxx.git xxxxx # submoduleの状態確認 # どのコミットハッシュのバージョンが # submoduleとして登録されているかを確認できる git submodule # submodule内でコミットを積んだ場合は、 # 親リポジトリが参照するコミットハッシュも更新する必要がある git submodule git add . git commit -m "update submodule" # submodule内でブランチ変えたりコミットを積んでる状態から # 親リポジトリがもともと参照しているバージョンに切り戻す git submodule update # はじめて親リポジトリをcloneしたときは # submoduleのinitとupdateを同時に行う git submodule update -i
links
wgetがリダイレクトしまくってエラーする
wgetがリダイレクトしまくってエラーする現象に出くわしたのでメモ。
自分の環境
golang:1.7
どんなエラーでてる?
root@7453a9101b5e:/var/app# wget --max-redirect=1 https://github.com/wp-cli/wp-cli/releases/download/v2.5.0/wp-cli-2.5.0.phar converted 'https://github.com/wp-cli/wp-cli/releases/download/v2.5.0/wp-cli-2.5.0.phar' (ANSI_X3.4-1968) -> 'https://github.com/wp-cli/wp-cli/releases/download/v2.5.0/wp-cli-2.5.0.phar' (UTF-8) --2021-12-02 07:31:42-- https://github.com/wp-cli/wp-cli/releases/download/v2.5.0/wp-cli-2.5.0.phar Resolving github.com (github.com)... 52.69.186.44 Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/2360755/ae27af00-b8c0-11eb-8a65-ec58a9e54400?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211202%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211202T073059Z&X-Amz-Expires=300&X-Amz-Signature=86171b4129a9e57e04e99ccfa77650440c906a3adc2831ed086b4495920c95df&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=2360755&response-content-disposition=attachment%3B%20filename%3Dwp-cli-2.5.0.phar&response-content-type=application%2Foctet-stream [following] converted 'https://objects.githubusercontent.com/github-production-release-asset-2e65be/2360755/ae27af00-b8c0-11eb-8a65-ec58a9e54400?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211202%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211202T073059Z&X-Amz-Expires=300&X-Amz-Signature=86171b4129a9e57e04e99ccfa77650440c906a3adc2831ed086b4495920c95df&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=2360755&response-content-disposition=attachment%3B%20filename%3Dwp-cli-2.5.0.phar&response-content-type=application%2Foctet-stream' (ANSI_X3.4-1968) -> 'https://objects.githubusercontent.com/github-production-release-asset-2e65be/2360755/ae27af00-b8c0-11eb-8a65-ec58a9e54400?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A/20211202/us-east-1/s3/aws4_request&X-Amz-Date=20211202T073059Z&X-Amz-Expires=300&X-Amz-Signature=86171b4129a9e57e04e99ccfa77650440c906a3adc2831ed086b4495920c95df&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=2360755&response-content-disposition=attachment; filename=wp-cli-2.5.0.phar&response-content-type=application/octet-stream' (UTF-8) --2021-12-02 07:31:42-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/2360755/ae27af00-b8c0-11eb-8a65-ec58a9e54400?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A/20211202/us-east-1/s3/aws4_request&X-Amz-Date=20211202T073059Z&X-Amz-Expires=300&X-Amz-Signature=86171b4129a9e57e04e99ccfa77650440c906a3adc2831ed086b4495920c95df&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=2360755&response-content-disposition=attachment;%20filename=wp-cli-2.5.0.phar&response-content-type=application/octet-stream Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.108.133, ... Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.111.133|:443... connected. HTTP request sent, awaiting response... 401 Unauthorized Username/Password Authentication Failed. --2021-12-02 07:31:42-- https://github.com/wp-cli/wp-cli/releases/download/v2.5.0/wp-cli-2.5.0.phar Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/2360755/ae27af00-b8c0-11eb-8a65-ec58a9e54400?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211202%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211202T073059Z&X-Amz-Expires=300&X-Amz-Signature=86171b4129a9e57e04e99ccfa77650440c906a3adc2831ed086b4495920c95df&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=2360755&response-content-disposition=attachment%3B%20filename%3Dwp-cli-2.5.0.phar&response-content-type=application%2Foctet-stream [following] converted 'https://objects.githubusercontent.com/github-production-release-asset-2e65be/2360755/ae27af00-b8c0-11eb-8a65-ec58a9e54400?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211202%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211202T073059Z&X-Amz-Expires=300&X-Amz-Signature=86171b4129a9e57e04e99ccfa77650440c906a3adc2831ed086b4495920c95df&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=2360755&response-content-disposition=attachment%3B%20filename%3Dwp-cli-2.5.0.phar&response-content-type=application%2Foctet-stream' (ANSI_X3.4-1968) -> 'https://objects.githubusercontent.com/github-production-release-asset-2e65be/2360755/ae27af00-b8c0-11eb-8a65-ec58a9e54400?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A/20211202/us-east-1/s3/aws4_request&X-Amz-Date=20211202T073059Z&X-Amz-Expires=300&X-Amz-Signature=86171b4129a9e57e04e99ccfa77650440c906a3adc2831ed086b4495920c95df&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=2360755&response-content-disposition=attachment; filename=wp-cli-2.5.0.phar&response-content-type=application/octet-stream' (UTF-8) 1 redirections exceeded.
似たような現象に出くわしている人がいた
https://github.com/hashicorp/packer/issues/2392
For me it was local encoding issue try wget --local-encoding=UTF-8
だって。
実際やってみた
wget --local-encoding=UTF-8 https://github.com/wp-cli/wp-cli/releases/download/v2.5.0/wp-cli-2.5.0.phar
動いた!
どういうこと?
- wgetはIRI (ユニコード対応版URI) をサポートしている。
- IRIのリモートのエンコーディングが UTF-8 、ローカルのエンコーディングが ANSI_X3.4-1968 となっていた。
- サーバから受け取ったリダイレクト先のアドレスを ANSI_X3.4-1968 から、UTF-8 に変換しようとしていた。
- この変換で正しくないアドレスが生成され、アクセスしてもエラーする状態となっていた。
ということかな。間違ってるかもしれないけど。
wgetのオプションについて
--no-iri IRI サポートを使わない --local-encoding=ENC 指定した ENC を IRI のローカルエンコーディングにする --remote-encoding=ENC 指定した ENC をデフォルトのリモートエンコーディングにする
macでUNIXtime・日時文字列の相互変換をする
% date -j -f "%Y-%m-%d %T" "2020-10-25 11:18:00" "+%s" 1603592280 % date -j -f "%s" "1552735080" "+%Y-%m-%d %T" 2019-03-16 20:18:00