!本家 *http://www.openssl.org/ !このサイト *原文 http://www.madboa.com/geek/openssl/ *和訳 OpenSSL Command-Line HOWTO *20080516和訳 OpenSSL Command-Line HOWTO 20080516 !!!メモ !https サーバのSSL証明書情報の取得 $ openssl s_client -connect nona.to:443 &1 | openssl x509 -noout -issuer -subject -dates issuer= /C=US/O=GeoTrust Inc./OU=Domain Validated SSL/CN=GeoTrust DV SSL CA subject= /serialNumber=8Z9tYaCq4TO-C/9BicKIHd3UbyVP9YaW/C=JP/O=nona.to/OU=3193087954/OU=See www.geotrust.com/resources/cps (c)11/OU=Domain Control Validated - QuickSSL(R) Premium/CN=nona.to notBefore=Aug 27 14:55:14 2011 GMT notAfter=Oct 29 09:03:52 2012 GMT !https サーバのSSL証明書有効期限の確認 $ openssl s_client -connect nona.to:443 &1 | openssl x509 -noout -dates notBefore=Aug 18 17:08:25 2008 GMT notAfter=Aug 19 17:08:25 2009 GMT !SSL証明書ファイルの有効期限の確認 $ openssl x509 -noout -dates < certificate.crt notBefore=Aug 18 17:08:25 2008 GMT notAfter=Aug 19 17:08:25 2009 GMT !鍵ファイルからのパスフレーズの除去 *Apache が自動起動するようにしたい *SSL キーのパスフレーズを解除するには openssl -rsa -in path.to.key.pass -out path.to.key.nopass !p7b --> crt 変換 openssl pkcs7 -in www.domain.p7b -print_certs > www.domain.crt !!!参考サイト !OpenSSLでの自己認証局(CA)と自己証明書の作成 / Unix な生活 *http://www015.upp.so-net.ne.jp/unixlife/practical/openssl.html ""OpenSSLを利用した、自己認証局(CA)の構築と、サーバ証明書の作成手順とApache+mod_SSLでの設定方法についてもご紹介します。 ""Section.1では、通常のhttps通信を可能とするため、以下の手順を行います。 ""1.自己認証局(CA)の構築 ""2.サーバの証明書の作成 ""3.自己認証局によるサーバ証明書への署名 ""4.Apache+mod_sslの設定例 ""Section.2では、Section.1に加えてクライアント認証に利用する証明書の発行方法とApacheの設定例を示します。 ""1.クライアント認証用証明書の作成 ""2.Apache+mod_sslでの設定例 !CCS Injection脆弱性(CVE-2014-0224)発見の経緯についての紹介 *https://lepidum.co.jp/blog/2014-06-05/CCS-Injection/ ""バグを発見するまでの過程 ""Heartbleedが公開されたときに、どのようにして次のバグを防ぐかが話題になっていました。ユニットテストを使うとか、各種アナライザーツールで検査するとか、フォークして綺麗に書き直してみるとか、APIも悪いとか、mallocを自作してはいけないとか、C言語はよくないから他の言語を使うべきとかいろいろありました。 ""他の言語の候補としてはATSが人気のようでしたが、自分の使い慣れているCoqでTLS/SSLを実装するとどうなるか考えていました。 プロトコルの安全性の証明などは大変ですし、実装の安全性にはたいして寄与しないので、見ただけで正しい実装をしているとすぐに確認できる程度のものを作ることを考えていました。 ""パーザとプリンタが正しく対になってることと、プリンタが自明に正しく実装されていることと、状態機械の動作が述語で表現できていることぐらいを目標にしていました。状態機械の一番複雑な部分がChangeCipherSpecにおける遷移なのは明らかだったので、そこだけ最初に考えてみて上に書いた条件を決定しました(一番複雑といっても、全く難しくはないです)。 ""次に、既存の実装が正しくこの条件をチェックしているかの確認を始めました。OpenSSL以外の実装はそれなりに検査をしていましたが、OpenSSLの実装はほとんど検査をしていないように見えました。その後、実際に攻略可能であることを確認しました。