プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

『プロフェッショナルSSL/TLS』は業務で即役に立った良い本でした

言いたいことはタイトルに書いたのですが、「『プロフェッショナルSSL/TLS』、良い本です」というのが結論の書評です。

『プロフェッショナルSSL/TLS』 – 技術書出版と販売のラムダノート

『プロフェッショナルSSL/TLS』に関しては前回のブログ記事で以下のように軽く触れていました。

業務でSSL証明書周りの作業をしていて、今まで穴だらけだったSSL/TLSの知識がむっちゃ足を引っ張っている現状だったので、以下の書籍を買いました。

最近こんなことを勉強してます - プログラマ行進曲第二章

まだ1/4も読めていないですが、それでも十分仕事に活かせているので原著の作者と翻訳者とラムダノートさんありがとう、という気持ちです。 前職でSSL証明書を取得する必要があったときにネットのリソースだけでSSL/TLS周りを勉強しましたが、知りたいことを探していても古かったりして本当に正しいのか逐一調べながらやっていたのに対して学べなかった経験からすると、SSL/TLSの勉強をしたかったらさっさとこの本を買って勉強した方が時間の節約になっていいと思いますね。

最近こんなことを勉強してます - プログラマ行進曲第二章

引用で触れている業務*1が終了したので、上記の引用のように軽く感想を書いて終わりにするのではなく、一回振り返って書評をブログ記事にしてまとめた方が今後の自分のためにもいいかなと思って今書いています。

本の内容の真っ当な書評としては他の方がもっと詳細に書いているので、そちらを見た方がいいでしょう。

【書籍】プロフェッショナルSSL/TLS:Geekなぺーじ

jovi0608.hatenablog.com

私の書評はどちらかというとユースケースに相当するもので、「こういう問題があって困ったので買って、無事に問題を解決しました」という風に読んでもらうといいのではないかと思います。

あと、書評とは書いていますが、まだ私はこの書籍を全て読んだわけではなく、業務に関連して参照した部分+αくらいしか読んでないことも記載しておきます。

何を必要として『プロフェッショナルSSL/TLS』を買ったのか?

上でも引用したように、業務でSSL証明書を扱う必要のある作業を担当することになり、元々のSSL/TLSの知識があやふやな状態でやっていたら仕事が進まなかったのでそれを解消するために買いました。

担当した業務についてもう少し具体的に書くと、Apache Kafkaを利用したプロダクトがあるのですが、KafkaがSSLを利用*2している箇所があり、そこに必要な証明書の設定をgradleでしていたのをopensslにしてシンプルにするという業務でした。

ここで問題になったのが、何回も述べているように、私の元々のSSL/TLS知識があやふやなことでした。

今回担当した業務では「既存の設定のフローをシンプルにする」というものでしたが、この既存の設定の仕組みが割と複雑で、まずそこを理解してシンプルにするところで難儀していたのに加え、SSL/TLS関連の知識があやふやだったせいで「そもそもどの設定を変更すればいいのか、あるいはいけないのか」ということが分からず、既存の設定のフローをシンプルにする前の段階で詰まることが業務初日に多発していました。

ここで「まずい、このまま行くと何も進捗が出ずに何日も経ってしまいそうだ」と思ったことと、元から「いつか買おう」と思っていたことが重なり、『プロフェッショナルSSL/TLS』をラムダノートさんのサイトに行って即購入したという流れになります。

『プロフェッショナルSSL/TLS』のどのあたりが役に立ったのか?

個人的にこの『プロフェッショナルSSL/TLS』という書籍が素晴らしいと思う点の一つは、「そもそも証明書とは何か、使用されているプロトコルは何か、それらがどういう風に使われているのかといった、SSL/TLS関連の全体的な知識」と「opensslコマンドを使ってCSRを生成するといった、より実装や具体的な作業に近づいた知識」の両方がちゃんとした分量でまとめられていて、自分の求めている情報がどちらの種類であっても引き出しやすくなるように章立てられていることです。

私みたいにSSL/TLSの知識があやふやな人がインターネット上のリソースだけでSSL/TLSに関することを調べようとすると、以下のような問題にぶち当たると思います。

  • 自分が分からなくなっている問題がSSL/TLSの全体的な知識を要求するものなのか、それとももっと実装に寄った具体的な知識なのかが判別付かない
    • 判別が就かない位なので、ネット上のリソースの正しさが判断できない
  • SSL/TLSに関して自分が抱える問題を解決してくれる情報が各サイトに散らばっていて、かき集めるだけでも一苦労

実際、私は前職でサイトのHTTPS化をする際に(余力がなかったので)ネット上だけでSSL証明書に関する事項を調べましたが、上記の問題に結構ぶち当たって時間を使ってしまった記憶があります。

それに比べると、この『プロフェッショナルSSL/TLS』は一冊手元にあるだけで疑問に思った点をすぐに調べることが出来、調べた点に関連しそうな情報も書籍内のみで少なくとも概要は知ることが出来るようになっていて助かりました。

私の業務の場合で言うと、既存の設定フローで証明書にAuthority Information Accessの情報を追加しているところがあったのですが、そもそも証明書のフィールド自体の知識がなかったので、「3.3.1 証明書のフィールド」と「3.3.2 証明書の拡張」のセクションで書かれている知識が非常に役立ちました。

加えて、実際に設定フローを変更する際、CAを立てて自分の望む設定で証明書を発行したり署名する際に必要なopensslの具体的なコマンドや設定ファイルの書き方などについては、「11.2 鍵と証明書の管理」と「11.4 プライベートCAを作る」に記載されていることをそのまま活用できました*3

私は今回使いませんでしたが、ApacheやNginxで設定する場合などの章もある*4ので、そういう知識が必要な業務でも十分役に立つと思います。

まとめ

最初にも書いたとおり、「『プロフェッショナルSSL/TLS』、良い本です」というのが感想です。

私みたいに「SSL/TLSの知識があやふやなのに業務で急に必要になった!」という人は、ネット上のリソースだけで消耗しそうになったら、「この本の購入を検討した方が結果的に安上がりになるかも」ということを頭の片隅にでも置いておくといいでしょうね。

安くはない書籍なので、会社のお金を使って購入するのもいいと思います。

*1:といってもチケット単位のそれほど大きくないものでしたが

*2:公式ドキュメントだとこのあたりの話です

*3:opensslのコマンドに関しては多少知りたいことが書かれてなかったのでmanコマンドによるヘルプと他サイトに記載された情報でカバーしています。

*4:これらの設定に関してはIPAが発行している「SSL/TLS暗号設定ガイドライン」で足りる場合も多いかと思いますが。