Shammer's Philosophy

My private adversaria

SSL

X509証明書項目-証明書ポリシー(CertificatePolicies)

説明(書籍から一部引用) CertificatePolicies拡張領域には、認証局が証明書の発行の際に使用した証明書ポリシーを識別するOIDのリストが含まれます。証明書を使用する各アプリケーションにより、リストされた1つまたは2つ以上のポリシーの使用が可能です。…

X509証明書項目-証明書ポリシー(PolicyIdentifier)

説明(書籍から一部引用) これは証明書の用途に関するポリシー識別子と修飾子のリストです。ポリシー識別子は証明書パスを検証する過程で使用することができます。ポリシー拡張領域が他の認証局によって発行されたCA証明書内で指定されている場合、そのポリシ…

X509証明書項目-秘密鍵利用期間(PrivateKeyUsage)

説明(書籍から一部引用) デジタル署名鍵を使用する際、秘密鍵の有効期間が証明書の有効期間と異なる場合があります。署名を生成する秘密鍵が有効でなくなり使えなくなったずっと後で、証明された公開鍵を使用してデジタル署名を検証しなければならないことは…

X509証明書項目-拡張鍵用途(ExtendedKeyUsage)

説明(書籍から一部引用) ExtendedKeyUsage拡張領域で、鍵の追加的な用途情報を指定できます。鍵の用途は鍵の用途識別子のリストとして定義されます。任意の組織は鍵の用途情報とそれに対応する識別子を定義することができます(これらの識別子の登録には他の…

X509証明書項目-鍵用途(KeyUsage)

説明(書籍から一部引用) KeyUsage拡張領域は公開鍵を使用する目的を定義します。 この拡張領域にはクリティカルの印をつけることを推奨します。 この拡張領域にクリティカルのフラグがついている場合、鍵はその指定された目的のみ使用されなければなりません…

証明書項目-対象者識別子(SubjectKeyIdentifier)

説明(書籍から一部引用) SubjectKeyIdentifier拡張領域は、証明書の対象者が複数の鍵集合を使用している場合、どの鍵集合に公開鍵が属しているかを示します。AuthorityKeyIdentifierとは違い、keyIdentifier形式のみが使用されます。この拡張領域は常に非ク…

X509証明書項目-認証局識別子(AuthorityKeyIdentifier)

説明(書籍から一部引用) 証明書の署名を検証するために、認証局が所有する複数の公開鍵のうちどれを使用するかを指定するために使用されます。これにより認証局は複数の鍵集合を使用した運用が可能となり、証明書ユーザーはどの鍵集合が使用されるべきかを識…

X509証明書項目-クリティカルインジケータ

クリティカルは項目でなく、項目に付与するフラグであるが。以前に作成した証明書で、basicConstraintsにcriticalを付けたことがある。何も理解せずに呪文のように付けたが、このcriticalにも意味があるということでそれを確認した。 このフラグがあると、こ…

X509証明書項目調査開始!!!

SSL

しばらくOCSPの調査を続けていたが、OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その4 - Shammerismで書いたように証明書自体のことを多少理解しないといけなそうなのでOCSPは一旦保留にして、X509のことを調べることにした。いつまでOCSP…

OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その4

SSL

その3までの概要 OCSPサーバはHTTPをベースに動作するらしく、OpenSSLのOCSPサーバ機能はその動作を完全に実現しているわけではないらしい。OpenSSLのOCSPクライアントは、OCSPサーバにHTTPヘッダとPOSTボディに必要な情報を入れてOCSPサーバにリクエストを…

OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その3

SSL

その2までの概要 OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その2 - Shammerismで、OpenSSLを使ってOCSPのリクエストを投げ、その応答を確認するというのをやってみた。これ自体は普通。また、OCSPのサーバはhttpでアクセスするので、ど…

OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その2

SSL

その1の振り返り OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その1 - Shammerismでうまくいかなかったのは、取得した証明書がDERであったためと思われる。少し慌てていたこともあり、そんなオチとは予想もしていなかった。やり方も整理し…

OpenSSLのOCSPはURLEncodeされたOCSPリクエストを処理できない?その1

SSL

OCSPリクエストの方式 OCSPリクエストには、どうやら(少なくとも)二通りの投げ方があるらしい。OpenSSLのocspでリクエストを投げるのは、普通にhttpのような形でリクエストを投げる。それとは異なる方法がHow to do OCSP requests using OpenSSL and CURL | …

OCSPの動作

SSL

OCSPがCRLに代わって証明書が失効されていないかどうかを確認する手段である、という認識はあったが、実際にこれがどのように動作するかについては認識が甘かった。大抵の場合は、手動で確認しに行くわけではなく、証明書に組み込まれた情報をもとにSSLクラ…

Revokeされた証明書を確認する

SSL

同一DNの証明書を作成するには証明書を無効化(Revoke)すればよい - Shammerismで証明書をRevokeしたが、それをどのように確認すればよいかについてのメモ。 証明書のRevokeとCRLファイルの生成 openssl ca で、-revoke $対象証明書という形で実行。-gencrl …

同一DNの証明書を作成するには証明書を無効化(Revoke)すればよい

SSL

OpenSSL TXT_DB error number 2 OpenSSL で独自の CA を作成して証明書を作成していると、以下のようなエラーで証明書をコミットできないことがある。 Sign the certificate? [y/n]:y failed to update database TXT_DB error number 2 Signed certificate i…

opensslでOCSPを動作させる

SSL

OCSPとは OpenSSLでCRLを生成する - Shammerismで、証明書を失効させる方法をメモしたが、そのCRLを配信する仕組みとしてOCSPというものがあるらしい。これをopensslで実行できるようだ。 CRLの作成 以前の記事とほぼ同じだが。 Define original CA echo 00 …

OpenSSLでCRLを生成する

SSL

すでに作成済の証明書を無効化する、というのをやってみた。 CAのディレクトリへ移動 echo 00>crlnumber openssl ca -config ca.conf -gencrl -revoke Revoke-Server/certificate.pem これをすれば以下のような出力がある。これを保存しておく。 Using confi…

OpenSSL の DName 項目変更

SSL

以下のサイトで紹介されていた。 Gmane Loom手順は以下のとおり。 項目を決定し、[ new_oids ] セクションに追記(小文字でないとうまくいかなかった) 追加項目の oid を指定(何らかの羅列を OID のルートとして連番を振るのがよさそう) [ req_distinguis…

openssl s_client で遊ぶ

SSL

MacOS 独自 CA 総まとめ - Shammerismで作成した認証局と中間認証局の証明書を以下のように合体させておく。 $ cat RootCA/certificate.pem > TrustCA.pem $ cat MiddleCA/certificate.pem >> TrustCA.pemこの TrustCA.pem を使用して、s_client で自前の SS…

MacOS 独自 CA 総まとめ

以下の内容を総まとめに整理。といっても、コマンドを羅列するだけ・・・ついでに、中間証明書も作ってみた。 独自のCA環境を構築する - 環境作成編 - Shammerism 独自のCA環境を構築する - OpenSSL設定ファイル編 - Shammerism 独自のCA環境を構築する - 自…

Marsh Ray氏が見つけたSSL/TLSの脆弱性

SSL

なんかSSL/TLSに脆弱性が見つかったらしい。この記事でそれを知った。 http://journal.mycom.co.jp/news/2009/11/09/006/?rt=m&t=o&n=2906 このサイトから、原文の情報を見てみたが、どうもSSLのRenegotiating時に 特殊なことをするとこの脆弱性を突けるらし…

独自CA環境構築と証明書作成手順(Debian / openssl コマンド編)

背景 CA.sh を使用して、CSR や秘密鍵、証明書の出力先を指定するには CA.sh への追記が必要。追記するためには、各コマンドのオプションとかを調べる必要がある。でも、ここまでやるなら最初から自分でコマンド打ち込んでもいいのでは?ということで、opens…

独自CA環境構築と証明書作成手順(Debian / CA.sh 編)

準備とGoal まず、OpenSSL 用の特定ディレクトリを設定($OpenSSL_DIR)。 その配下に RootCA($MyRootCA)と、サーバー証明書を生成する各サーバー用のディレクトリ($ServerCertificates)も作成しておく。 コマンドにするとこんな感じか。 mkdir $OpenSSL…

独自CA環境構築と証明書作成手順(Windows編)

SSL

OpenSSLを使用して、独自のCAを作り、そのCAに署名されたサーバー証明書を作成する手順をまとめてみた。まず、以下のスクリプトでCAの環境を構築する。 @REM @REM Change Directory to OpenSSL Home @REM cd /D C:\OpenSSL @REM @REM Define MyCAName. This …

OpenSSLで証明書を承認する

SSL

先に作成していたCSRに対して、CAを使用して証明書を発行してみる。 なお、先に作成していたopenssl.confやCSRを利用するものと想定。コマンドは以下のようになる。 openssl ca -conf openssl.conf -in server1_csr.pem 設定ファイルがおかしいと何らかのエ…

OpenSSLで証明書要求(CSR)を作る

SSL

サーバーの証明書を作るまでの流れは大まかに以下の通り。 サーバーの秘密鍵を作る サーバーの証明書要求(CSR)を作る 証明書要求をCAに送付し、署名された証明書を得る 「独自のCA環境を構築する - 自己署名証明書作成編」の手順で、自分専用CAの証明書を…

独自のCA環境を構築する - 自己署名証明書作成編

SSL

「OpenSSL設定ファイル編」では、ディレクトリ構成や証明書のpolicyについて定義を行ったが、 実際に証明書を作成するにはもう少し定義が必要。先のopenssl.confにもう少し情報を追加する。 [ca] default_ca = MyOwnRootCA [MyOwnRootCA] dir = /MyOwnRootCA…

独自のCA環境を構築する - OpenSSL設定ファイル編

SSL

「独自のCA環境を構築する - 環境作成編」の手順で、OpenSSLを実行するためのディレクトリ構造はできあがった。 実際に、OpenSSLでX509証明書を作る際には、コマンド実行時に設定ファイルを定義し、そのファイルの設定に基づいて証明書が作られる。 [ca] def…

独自のCA環境を構築する - 環境作成編

SSL

Mac OS X で、独自のCA環境を構築してみることにした。 Mac OS X には、デフォルトでOpenSSLがインストールされているのでそれを使う。 まず、CA用のファイルを置くディレクトリを決める。 今回は、~/MyOwnRootCAとしておく。Terminalを起動して、以下のコマ…