びくんびくんしながらコードを書く。

いしきひくい系エンジニアのらくがき帳

curlでリダイレクト時に追跡するようにする+α

本記事は ディップ with 全部俺 AdventCalendar 16日目の記事です。

動作確認していたサービスでhttpを閉じる(リダイレクトすらしない)ことを確認するためにcurlで確認していたところ、Responseで301が返ってきているため、リダイレクト追跡するのはどうすればよいか?に詰まったのでメモとして残しておきます。

3xx系のリダイレクトを追跡する

curl -X GET http://domain.example
上記コマンドで301 Moved PermanentlyというようなResponseが来た。 3XX系のhttp status codeはリダイレクトに当たるため、変なリダイレクトになっていないか確認する必要がある。

調べてみるとオプション指定でOKということだったので、オプション指定して確認

curl -X GET http://domain.example -L
上記のように -L オプションをつければ良い。

なお、詳細な情報(ResponseHeaderなど)が必要な場合 -v オプションで確認できる。

TSLのバージョンを指定してリクエストする

通信でTSLのバージョンを固定している場合などがある。
※低いバージョンを締め出しているケース

この場合curlで本当に閉じているか?の確認を行う場合は下記のオプションを使う。
--tlsv1.2 1.0や1.1を確認する場合は1.2の部分を変更すれば良い。
ただし、-v オプションを付けないと色々見れないので、

curl -X GET https://domain.example --tlsv1.2

これでtlsのバージョンを固定した通信になる。 なお、1.0や1.1が閉められている場合、下記の様なエラーが出力される。

$ curl -X GET https://domain.example --tlsv1.1
curl: (35) error:14004410:SSL routines:CONNECT_CR_SRVR_HELLO:sslv3 alert handshake failure  

以上